【问题标题】:rJava is not picking up the correct Java versionrJava 没有选择正确的 Java 版本
【发布时间】:2015-03-23 21:02:24
【问题描述】:

我已经为这个问题苦苦挣扎了一段时间。当我从 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 解释器:/usr/bin/java Java版本:1.8.0_25 Java 主路径:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre Java 编译器:/usr/bin/javac Java 头文件生成:/usr/bin/javah Java 归档工具:/usr/bin/jar OS X 上的非系统 Java

试图编译和链接一个 JNI 程序

检测到 JNI cpp 标志:-I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin 检测到 JNI 链接器标志:-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 库路径:$(JAVA_HOME)/lib/server JNI cpp 标志:-I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin JNI 链接器标志:-L$(JAVA_HOME)/lib/server -ljvm

然后我继续使用 R 并安装 rJava 包作为源,如下所示: install.packages("rJava", type="source") 我到达DONE(rJava)

然后当我使用以下方式检查版本时:

库(rJava) .jinit() .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")

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

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

【问题讨论】:

  • 你试过options(java.home="/path/to/java")吗?
  • javareconf -n 什么都不做 - -n 告诉它不要进行任何更改(请参阅 R 文档)

标签: r rjava


【解决方案1】:

最新版本的 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

【讨论】:

  • 如果您使用的是 Packrat 并且不想在外部存储库中遇到麻烦,我建议您也这样做,但使用官方 CRAN 存储库install.packages("rJava",,"http://cran.r-project.org",type="source")
  • 我花了几个小时——几个小时——解决这个问题并尝试了很多答案。你的是唯一有效的。如果我能给你 100 个向上箭头,我会做到的。 ——带着香槟在屋子里跳舞
【解决方案2】:

在这种情况下帮助我的是两件事(遵循此处的建议: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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2015-09-03
    • 2011-10-22
    • 2018-10-29
    相关资源
    最近更新 更多