【问题标题】:Issue with rJava, mac 10.12.6 and Java v 9 (R version 3.4.1)rJava、mac 10.12.6 和 Java v 9(R 版本 3.4.1)的问题
【发布时间】:2018-03-07 00:34:52
【问题描述】:

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

我遵循here 列出的所有步骤,包括使用终端编辑我的 ~/.profile 以包括:

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

导出 PATH=$JAVA_HOME/bin:$PATH

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

sudo R CMD javareconf

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

警告:“JNI_CreateJavaVM”已弃用 [-Wdeprecated-declarations] 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: Cannot compile a simple JNI program.有关详细信息,请参阅 config.log。

确保您已在 R 中安装并正确注册了 Java 开发工具包。 如果有疑问,请以 root 身份重新运行“R CMD javareconf”。

错误:“rJava”包配置失败

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

回显 $JAVA_HOME

我明白了:

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

我怎么知道这个 JDK 还是 JRE?

由于我的错误消息,我认为我遇到了 JNI 问题,但我不确定如何着手处理该问题。任何关于使用 Michal 的教程可能出错的见解将不胜感激!

附:我最初的问题是在 R 中,尝试加载库(rJava)并收到此错误:

错误:“rJava”的包或命名空间加载失败: .onLoad 在“rJava”的 loadNamespace() 中失败,详细信息: 调用: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 原因:找不到图片

【问题讨论】:

    标签: java r macos rjava


    【解决方案1】:

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

    > git clone https://github.com/mkowsiak/jnicookbook.git
    > cd jnicookbook/recipes/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 的错误日志以确保其中使用了哪些内容。

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

    【讨论】:

    • 非常感谢,非常感谢!当我运行这个时,我得到了这个错误:/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/bin/java -Djava.library.path=:./lib -cp target recipeNo001.HelloWorld 错误:可以找不到或加载主类 recipeNo001.HelloWorld 原因:java.lang.ClassNotFoundException:recipeNo001.HelloWorld 制作:*** [测试] 错误 1 ​​- 关于这意味着什么的任何建议? O.o
    • 确保在运行“make test”之前调用:“make” - 我错过了将这一步放在说明中:(
    • 我也遇到了同样的问题。通过@mko 的建议,我检查了 JDK 是否可以编译 JNI 代码,但现在的问题是如何让 rJava 使用正确的 Java 安装?
    • 看看这里很好:cran.cnr.berkeley.edu/bin/macosx/tools 这里的问题是 R3.4 使用了支持 OpenMP 的新 clang。您可能还必须正确设置 Clang 设置 :( 通常,R3.4 + macOS + rJava 可能需要相当多的努力 :(
    【解决方案2】:

    我关注了这个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
    

    安装成功!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多