【发布时间】:2018-07-02 07:42:46
【问题描述】:
几天前我下载了一个安装的新 R 版本:
R 版本 3.5.0 (2018-04-23) -- "Joy in Playing" 版权所有 (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (64-bit)
还有一个新的 RStudio 版本:
Rstudio 版本 1.1.423
但是,当我尝试加载 rJava 库时,我收到了以下错误消息:
> library("rJava",
lib.loc="/Library/Frameworks/R.framework/Versions/3.5/Resources/library")
Error: package or namespace load failed for ‘rJava’:
.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object
'/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/
rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.5/Resources/library/
rJava/libs/rJava.so, 6): Library not loaded:
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/
libjvm.dylib
Referenced from:
/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/
libs/rJava.so
Reason: no suitable image found. Did find:
/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libjvm.dylib:
mach-o, but wrong architecture
/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libclient.dylib
: mach-o, but wrong architecture
我使用的是 Mac,我的操作系统是:
OS X Sierra 10.12.6。
当我看到 rJava 不起作用时,我安装了以下 java 更新:
java 8 更新 171
并重新启动计算机。然后我尝试再次使用 rJava 和 coreNLP 并显示相同的错误消息。
所以,我想也许我需要一个旧版本的 java 并为 macOS 2017-001 安装了 java,它显然为 macOS 10.13 High Sierra、macOS 10.12 Sierra、macOS 10.11 El Capitan、macOS 10.10 Yosemite 安装了旧的 Java 6 运行时、macOS 10.9 Mavericks、macOS 10.8 Mountain Lion 和 macOS 10.7 Lion。 我从以下渠道获得了这个版本:
https://support.apple.com/kb/dl1572?locale=es_ES
安装此软件包后,我再次重新启动计算机,打开 Rstudio 并再次尝试加载 rJava 和 coreNLP 并显示相同的错误消息。在寻找解决方案后,我在网上找到了一个建议,在mac终端上运行以下命令行:
sudo R CMD javareconf
我确实运行了该命令,但收到以下关于 jni.h 文件的错误消息:
MacBook-Air-de-Juan:~ juancarlos$ sudo R CMD javareconf
Password:
Java interpreter : /usr/bin/java
Java version : 1.6.0_65
Java home path : /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags :
detected JNI linker flags : -
L/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries -ljvm
clang -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -
I/usr/local/include -fPIC -Wall -g -O2 -c conftest.c -o conftest.o
conftest.c:1:10: fatal error: 'jni.h' file not found
#include <jni.h>
^~~~~~~
1 error generated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program
JAVA_HOME : /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Java library path:
JNI cpp flags :
JNI linker flags :
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.
我不得不说我不是系统或计算机工程师,我对这些问题的了解仅限于我在互联网上找到的东西。有人可以帮我弄清楚这个错误消息是什么意思,以及如何修复它以便能够在 R 中使用 Java 并运行 rJava 和 coreNLP?
【问题讨论】:
标签: java r rstudio stanford-nlp rjava