R,加载 rJava 错误
R, loading rJava error
我是 运行 macOS sierra (10.12.5) 上的 R(版本 3.4.0),我正在尝试使用需要使用 rJava 库的 xlsx 库。
当我尝试在 R 控制台中使用 library(rJava)
加载 rJava 时(在 RStudio 或终端中没有区别),我收到以下错误消息,我无法理解:
Fehler: package or namespace load failed for ‘rJava’:
.onLoad in loadNamespace() für 'rJava' fehlgeschlagen, Details:
Aufruf: dyn.load(file, DLLpath = DLLpath, ...)
Fehler: kann shared object '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so' nicht laden:
dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
Reason: image not found
谷歌搜索这个问题我发现很多帖子有点相似(但每次的问题都略有不同), 是其中最有希望的。
由于建议的步骤需要适应我的情况,而且我是新手,所以我无法实施它们。我能做什么?
附加信息:
shell命令java -version
returns:
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
和shell命令R CMD javareconf
returns:
Java interpreter : /usr/bin/java
Java version : 1.8.0_131
Java home path : /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Non-system Java on macOS
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.8.0_131.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include -fPIC -Wall -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.8.0_131.jdk/Contents/Home/jre/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_131.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.
任何帮助将不胜感激!
有效!
安装和重新安装不同的 java 版本并使用 R 命令重新安装 rJava 后 install.packages("rJava")
我到了在 R 控制台加载库的地步 (shell window) 不再抛出错误信息。
之后,我能够使用 中的答案通过 运行 这个 shell 命令使其在 RStudio 中工作:
sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
毕竟不是太复杂!感谢大家的耐心等待。
JAVA_HOME MAC OS 不同版本的路径不同。在某些情况下,有 /jre
文件夹,在某些情况下,在 /Home
导演手动进入 /server
文件夹后,在终端中使用 CD 命令并使用 pwd
复制整个路径使用它来设置 java.home 然后你可以轻松加载 rJava
库。这就是我解决问题的方法
options("java.home"="/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/lib")
Sys.setenv(LD_LIBRARY_PATH='$JAVA_HOME/server')
dyn.load('/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)
我是 运行 macOS sierra (10.12.5) 上的 R(版本 3.4.0),我正在尝试使用需要使用 rJava 库的 xlsx 库。
当我尝试在 R 控制台中使用 library(rJava)
加载 rJava 时(在 RStudio 或终端中没有区别),我收到以下错误消息,我无法理解:
Fehler: package or namespace load failed for ‘rJava’:
.onLoad in loadNamespace() für 'rJava' fehlgeschlagen, Details:
Aufruf: dyn.load(file, DLLpath = DLLpath, ...)
Fehler: kann shared object '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so' nicht laden:
dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
Reason: image not found
谷歌搜索这个问题我发现很多帖子有点相似(但每次的问题都略有不同),
由于建议的步骤需要适应我的情况,而且我是新手,所以我无法实施它们。我能做什么?
附加信息:
shell命令java -version
returns:
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
和shell命令R CMD javareconf
returns:
Java interpreter : /usr/bin/java
Java version : 1.8.0_131
Java home path : /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Non-system Java on macOS
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.8.0_131.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include -fPIC -Wall -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.8.0_131.jdk/Contents/Home/jre/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_131.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.
任何帮助将不胜感激!
有效!
安装和重新安装不同的 java 版本并使用 R 命令重新安装 rJava 后 install.packages("rJava")
我到了在 R 控制台加载库的地步 (shell window) 不再抛出错误信息。
之后,我能够使用
sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
毕竟不是太复杂!感谢大家的耐心等待。
JAVA_HOME MAC OS 不同版本的路径不同。在某些情况下,有 /jre
文件夹,在某些情况下,在 /Home
导演手动进入 /server
文件夹后,在终端中使用 CD 命令并使用 pwd
复制整个路径使用它来设置 java.home 然后你可以轻松加载 rJava
库。这就是我解决问题的方法
options("java.home"="/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/lib")
Sys.setenv(LD_LIBRARY_PATH='$JAVA_HOME/server')
dyn.load('/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)