rJava没有找到正确的Java版本

时间:2015-01-25 04:51:50

标签: r rjava

我一直在努力解决这个问题。当我从R安装rJava时,它需要Java 1.6而不是1.8。我正在使用MAC OS 10.8.5,这些是我已经完成的步骤。

我已经安装了R.
我的机器上有Java 1.6和1.8 我使用以下方法从终端重新配置R:sudo R CMD javareconf -n 这是输出的样子:

Java interpreter : /usr/bin/java
Java version     : 1.8.0_25
Java home path   : /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Non-system Java on OS X

尝试编译和链接JNI程序

detected JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
gcc -arch x86_64 -std=gnu99 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include    -fPIC  -mtune=core2 -g -O2  -c conftest.c -o conftest.o
gcc -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation


JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
Java library path: $(JAVA_HOME)/lib/server
JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin
JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm

然后我继续使用R并安装rJava包作为源代码: install.packages("rJava", type="source") 然后我到了DONE(rJava)

然后当我使用:

检查版本时
library(rJava)
.jinit()
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")

我仍然得到1.6.0_25-b17而不是1.8

如果您知道解决方法,请告诉我。

2 个答案:

答案 0 :(得分:12)

最新版本的rJava解决了这个问题。 我使用命令

site安装了最新版本
  

install.packages("rJava",,"http://rforge.net/",type="source")

现在通过调用jvm输出为:

> library(rJava)
> .jinit()
> .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
[1] "1.7.0_75-b13"

注意:我安装了java 1.7和1.6,而不是java 1.8

答案 1 :(得分:0)

在这种情况下,对我有帮助的是两件事(遵循来自https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html的建议)

  • 通知Ubuntu您要使用的Java安装。

为此,我跑了

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.8.0_201/bin/java" 1

$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk1.8.0_201/bin/javac" 1

$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/java/jdk1.8.0_201/bin/javaws" 1

之后

$ sudo update-alternatives --set java /usr/java/jdk1.8.0_201/bin/java

$ sudo update-alternatives --set javac /usr/java/jdk1.8.0_201/bin/javac

$ sudo update-alternatives --set javaws /usr/java/jdk1.8.0_201/bin/javaws

然后,我终于可以在以下选项中看到我的Java了

sudo update-alternatives --config java

我在其中选择了新安装的java。然后我跑了

 sudo R CMD javareconf JAVA_HOME=/usr/java/jdk1.8.0_201/bin/