這個問題困擾了我一個星期了。我已經在運行Ubuntu服務器14.04的R上安裝了rJAVA。我安裝rJava包的源是這樣的:rJAVA java錯誤版本
install.packages("rJava", type="source")
,我也得到:
DONE(rJava)
我已經安裝了java-8-openjdk
和運行java -version
時,我得到了正確的版本,這是輸出:
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~14.04-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
但是,當我檢查R中的Java版本使用
sudo R CMD javareconf
或
library(rJava)
jinit()
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
Java版本仍然設置爲1.7:
Java interpreter : /usr/lib/jvm/default-java/jre/bin/java
Java version : 1.7.0_101
Java home path : /usr/lib/jvm/default-java
Java compiler : /usr/lib/jvm/default-java/bin/javac
Java headers gen.: /usr/lib/jvm/default-java/bin/javah
Java archive tool: /usr/lib/jvm/default-java/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/include
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 -I/usr/lib/jvm/default-java/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/default-java
Java library path: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/include
JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm
Updating Java configuration in /usr/lib/R
Done.
請讓我知道我錯過了什麼。
將您的'JAVA_HOME'環境變量更改爲'java-8 jvm'目錄。 – Abdou
@abdou謝謝。當我回顯$ JAVA_HOME時,我得到了 /usr/lib/jvm/java-8 -d openjdk-amd64 –
克里斯,德克的回答是相當包羅萬象的。我很驚訝它不能解決問題。但是您可以嘗試將.Rprofile文件中的'JAVA_HOME'變量設置爲'java-8 jvm'目錄。我真的懷疑它會有什麼不同,但至少可以嘗試。 – Abdou