rJava,mac 10.12.6和Java v 9(R版本3.4.1)

时间:2017-09-25 22:59:54

标签: java r macos rjava

我在安装和加载rJava时仍然遇到问题。我有R 3.4.1('单烛'); Java v 9和mac OS 10.12.6。

我按照列出here列出的所有步骤,其中包括使用终端编辑我的〜/ .profile以包含:

导出JAVA_HOME = $(/ usr / libexec / java_home -v 9)

export PATH = $ JAVA_HOME / bin:$ PATH

进行其他更改以将R连接到“正确”的Java。我跑的时候

sudo R CMD javareconf

但是,我收到一条错误消息:

警告:不推荐使用'JNI_CreateJavaVM' [-Wdeprecated-声明] JNI_CreateJavaVM(0,0,0); ^ /System/Library/Frameworks/JavaVM.framework/Headers/jni.h:1937:1:注意: 'JNI_CreateJavaVM'已明确标记为已弃用 JNI_CreateJavaVM(JavaVM ** pvm,void ** penv,void * args); ^ 生成了1个警告。

当我跑步时

R CMD INSTALL rJava_0.9-8.tar.gz

一切顺利,直到我收到错误消息:

检查是否可以编译JNI程序... configure:error:无法编译简单的JNI程序。有关详细信息,请参阅config.log。

确保已安装Java Development Kit并在R中正确注册。 如有疑问,请以root身份重新运行“R CMD javareconf”。

错误:包'rJava'

的配置失败

来自上面链接的网站的Michal建议确保'/ usr / libexec / java_home -v 9'“指向”JDK而不是JRE。我不知道该怎么做。当我尝试类似的东西时:

echo $ JAVA_HOME

我明白了:

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home

我如何知道这个JDK还是JRE?

由于我的错误消息,我认为我有一个JNI问题,但我不知道如何开始处理这个问题。任何使用Michal教程可能出错的见解都将不胜感激!

P.S。我的原始问题是在R中,试图加载库(rJava)并收到此错误:

错误:'rJava'的包或名称空间加载失败:  .onLoad在'rJava'的loadNamespace()中失败,详情:   call:dyn.load(file,DLLpath = DLLpath,...)   错误:无法加载共享对象'/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so':   dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so,6):未加载库:@ rpath / libjvm.dylib   参考自:/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so   原因:未找到图像

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作来测试Java 9是否为JDK。请执行以下操作:

> git clone https://github.com/mkowsiak/jnicookbook.git
> cd jnicookbook/recipeNo001
> export JAVA_HOME=$(/usr/libexec/java_home -v 9)
> export PATH=$JAVA_HOME/bin:$PATH
> make
> make test

如果你看到

Hello world!

最后,这意味着您的JDK可以编译JNI代码。现在,如果它工作,这意味着rJava仍然使用不正确的Java安装(例如Apple的一个)。在这种情况下,您需要查看rJava的错误日志,以确保在那里使用的内容。

我希望这对你至少有所帮助。

答案 1 :(得分:0)

我遵循了这个link,特别是:

管理员帐户用户

在终端发出以下命令:

export JAVA_HOME=${JAVA_HOME:-$(/usr/libexec/java_home)} 
export LIBJVM=$(find "${JAVA_HOME}" -name 'libjvm.dylib')
R CMD javareconf JAVA_LIBS="${LIBJVM}" JAVA_LD_LIBRARY_PATH="${LIBJVM}" JAVA_CPPFLAGS="'-I${JAVA_HOME}/include -I${JAVA_HOME}/include/darwin -I$(dirname "${LIBJVM}")'"
ln -fs "$LIBJVM" /Library/Frameworks/R.framework/Libraries

安装工作正常!