簡體   English   中英

安裝rJava

[英]Installation of rJava

我嘗試使用之前關於 SO 的問題/答案來解決這個問題,但沒有成功。 所以,這是我的問題。

我在 Ubuntu box (14.04) 上使用 RStudio,我嘗試從源代碼升級 rJava,但在此過程中我設法丟失了它。

我嘗試使用重新安裝它,

install.packages("rJava")

返回以下錯誤消息,

configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.

If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.

ERROR: configuration failed for package ‘rJava’
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’
Warning in install.packages :
  installation of package ‘rJava’ had non-zero exit status

所以,我去了終端並輸入,

sudo R CMD javareconf

這也給出了以下錯誤,

trying to compile and link a JNI program 
detected JNI cpp flags    : 
detected JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG      -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
 #include <jni.h>
                 ^
compilation terminated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program


JAVA_HOME        : /usr/lib/jvm/default-java
Java library path: 
JNI cpp flags    : 
JNI linker flags : 
Updating Java configuration in /usr/lib/R
Done.

我試圖遵循這些鏈接, 一個兩個,但它們似乎沒有解決我的問題; SO上有更多鏈接,但我不確定要遵循哪一個。 我還通過 Ubuntu 軟件中心卸載並重新安裝了 RStudio,但這沒有任何區別。

其他人可以幫忙嗎?

簡而言之,我希望能夠再次將 RStudio 與 rJava 一起使用,而不會破壞 Java 的任何其他用途(例如 jmol)。

您似乎沒有安裝JDK。 你至少需要

sudo apt-get install openjdk-7-jdk

然后重新運行

sudo R CMD javareconf

確保您沒有手動設置JAVA_HOME - 它會被自動檢測到。 然后你應該看到這樣的東西:

$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version     : 1.7.0_91
Java home path   : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar

trying to compile and link a JNI program 
detected JNI cpp flags    : -I$(JAVA_HOME)/../include
detected JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/java-7-openjdk-amd64/jre/../include     -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR


JAVA_HOME        : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java library path: $(JAVA_HOME)/lib/amd64/server
JNI cpp flags    : -I$(JAVA_HOME)/../include
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm

sudo apt-get install r-cran-rjava什么問題?

例如,請參閱此較早的答案及其周圍的問題/線程。

對於從頭開始安裝,您仍然可能比從sudo apt-get build-dep r-cran-rjava開始更糟糕。 它將為您提供與您的 Ubuntu 版本相對應的 JDK。

首先,我建議從其網站安裝 Rstudio: https ://www.rstudio.com/products/rstudio/download/(即 Rstudio 64 位: https ://download1.rstudio.org/rstudio-0.99.489-amd64.deb )。 這並不能直接解決問題,但它有助於避免 Rstudio 的其他錯誤。

關於錯誤,嘗試確保您安裝了 JDK。 我不認為命令java -version可以判斷是否安裝了 JDK。 你必須檢查JDK本身的包,或者根據錯誤信息,這樣做:

locate jni.h輸出應與您的 JAVAHOME 匹配或兼容,例如:

/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h 
/usr/lib/jvm/java-7-oracle/include/jni.h        

更新 1: R CMD javareconf正在尋找$(JAVA_HOME)/include下的jni.h文件您已經安裝了 JDK,但很可能您將默認 java 設置為 JRE 目錄,這就是錯誤發生的原因。

您可以通過執行以下命令查看default-java真正指向的位置:

jRealDir=$(readlink -f /usr/lib/jvm/default-java)
echo $jRealDir
# sample correct output: /usr/lib/jvm/jdk1.8.0_65 
# or /usr/lib/jvm/java-8-oracle if you default to Oracle's
# now check jni.h
ls -l $jRealDir/include/jni.h
# sample expected output:
# /usr/lib/jvm/jdk1.8.0_65/include/jni.h

如果ls命令失敗,則必須進行設置,以便javareconf (以及更高版本的rJava )可以使用來自 JDK 而不是來自 JRE 的 java。 您有兩個選擇:

方法 1:在系統范圍內進行

這很方便,但可能會影響其他程序,例如您提到的jmol 但別擔心,這是可恢復的,只需重新運行命令並選擇舊的。 執行以下命令並選擇具有 JDK 的目錄:

sudo update-alternatives --config java

在測試jmol工作原理之后,如果它工作正常,那么恭喜。 您現在已准備好測試 rJava。 如果沒有,請嘗試下面的第二種方法

方法 2:僅針對 R 執行此操作

把它放在你的主目錄下的.Rprofile

Sys.setenv(JAVA_HOME = '/usr/lib/jvm/jdk1.8.0_65')
# this set JAVA_HOME for R to correct java home dir. 

更新或創建.Rprofile后,請在.Rprofile重新啟動 R。 在這種情況下, R CMD javareconf可能仍然會失敗,但是如果您從 Rstudio 的Tools菜單下的Shell運行它應該沒問題。

關於從 Ubuntu 的股票回購安裝或 Rstudio。 運行rJava不會有什么不同。 再說一次,我建議為它的主頁安裝 Rstudio,因為新版本也有一些不錯的功能(即更好的自動完成,我最喜歡)。

這是對我有用的 R-Bloggers 鏈接: https : //www.r-bloggers.com/installing-rjava-on-ubuntu/

sudo apt-get install -y default-jre
sudo apt-get install -y default-jdk
sudo R CMD javareconf
install.packages("rJava")

我一直在處理這個確切的問題,該線程或其他類似的線程中沒有任何內容可以解決它。 我在 Ubuntu 16.04 上,這是我讓它工作的方式:

apt-get install openjdk-9-jdk rm -rf /usr/lib/jvm/default-java ln -s /usr/lib/jvm/java-9-openjdk-amd64/ /usr/lib/jvm/default-java

您可以看到JAVA_HOME在錯誤消息中的位置。

然后使用locate jni.h找到哪里是jni.h ,下次使用軟鏈接到這個位置鏈接到$(JAVA_HOME)/include ,就像提到@biocyberman。

這就是我所做的:

ln -s /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /opt/conda/include/jni.h
ln -s /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h /opt/conda/include/jni_md.h
ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib/

由於我的JAVA_HOME/opt/conda而我也沒有jni_md.h-ljvm

我正在使用 Ubuntu 16.04

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM