【问题标题】:Force rJava to use a specific JVM in R强制 rJava 在 R 中使用特定的 JVM
【发布时间】:2016-01-02 21:27:17
【问题描述】:

我想在 MAC OSX (10.10.3) 的 R 中使用 rJava 包。系统配置如下:

Haroons-MacBook:~ haroonr$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre
Haroons-MacBook:~ haroonr$ echo $LD_LIBRARY_PATH
/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/lib/server
Haroons-MacBook:~ haroonr$ R CMD javareconf
Java interpreter : /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/bin/java
Java version     : 1.7.0_75
Java home path   : /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre
Java compiler    : /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/../bin/javac
Java headers gen.: /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/../bin/javah
Java archive tool: /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/../bin/jar
Non-system Java on OS X

trying to compile and link a JNI program 
detected JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include    -fPIC  -Wall -mtune=core2 -g -O2  -c conftest.c -o conftest.o
clang -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 -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
/Library/Frameworks/R.framework/Resources/bin/javareconf: line 364: cd: /Volumes/Macintosh: No such file or directory


JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk1.7.0_75.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
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.

Haroons-MacBook:~ haroonr$ R --version
R version 3.2.2 (2015-08-14) -- "Fire Safety"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin13.4.0 (64-bit)

现在每当我在 rStudio 中运行时:

.jinit()
   .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
    [1] "1.6.0_65-b14-468-11M4833"

这意味着 rJava 正在使用 Java 1.6,但我不想使用 1.6。 Java 1.6 在进一步的步骤中产生了问题。如何确保 rJava 仅使用 1.7?

安装的rJava包是0.9-7

注意:link 上几乎有类似的问题,但我完全迷失了 otools。另一个未回答的类似question

【问题讨论】:

  • 您是否尝试过为第二个链接提出的建议?
  • 我不知道如何将它与 .jiit() 一起使用。我尝试遵循 jinit 文档,但无法正确获取。
  • 是的,我已经显示了上面的输出
  • 你在R CMD javareconf之后重新安装rJava了吗?
  • 不,我现在就做。

标签: java r rstudio osx-yosemite rjava


【解决方案1】:

rJava 的最新版本 (0.9-8) 已修复此问题。 我使用命令从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"

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多