这个问题困扰了我一个星期了。我已经在运行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