我在安装和加载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 原因:未找到图像
答案 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
安装工作正常!