java - rJava加载错误

标签 java r rstudio rjava

像很多人一样,我在 RStudio 中加载 rJava 时遇到了问题——直接使用 R GUI 时同样的问题也会重现。

这是错误:

> require(rJava)
Loading required package: rJava
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.4/Resources/library/rJava/libs/rJava.so':
  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

我尝试了很多方法,包括从命令行重新配置:

sudo R CMD javareconf -n

Java interpreter : /usr/bin/java
Java version     : 1.8.0_144
Java home path   : /Library/Java/JavaVirtualMachines/jdk1.8.0_144.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_144.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_144.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_144.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_144.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

当我检查 options("java.home") 时,它被设置为 NULL,所以我将其设置为以下内容:

> options("java.home"="/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre")

我还重新安装了 Java SE Development Kit 8,然后重新安装了 rJava

无论如何,我仍然会遇到同样的错误。

这是我的 session 信息:

> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: OS X El Capitan 10.11.6

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] colorspace_1.3-2 scales_0.5.0     compiler_3.4.1   lazyeval_0.2.0  
 [5] plyr_1.8.4       tools_3.4.1      gtable_0.2.0     tibble_1.3.4    
 [9] Rcpp_0.12.12     ggplot2_2.2.1    grid_3.4.1       rlang_0.1.2     
[13] munsell_0.4.3   

如有任何想法,我们将不胜感激。

最佳答案

我遇到了类似的问题。最快的解决方案是手动加载 dylib

dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
require(rJava)

如果上述解决方案有效,则可以通过将此命令添加到终端来实现长期解决方案。

sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

找到这个解决方案 here .您将不再需要每次都手动加载 dylib

关于java - rJava加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46366520/

相关文章:

java - 如何将输入数据传递给 Java 中现有的 tensorflow 2.x 模型?

java - 如何将 wurfl 集成到我们的 jar 文件中

xcode - 错误:尝试 devtools::install_github() 时出现 "Could not find build tools necessary to build stringi"

css - 更改 RStudio 主题中的不可见(白色字体)输出 `Cobalt`

javax.net.ssl.SSLHandshakeException : no cipher suites in common no cipher suites in common

java - 我如何在 Java JSP 的 JSTL 中执行 "nested if"?

多列上的R dplyr过滤字符串条件

r - tidyverse 解决方案,用于将多个列重新编码为新列,其中列名后缀增加一

R : object not found

github - 来自 RStudio : "The system cannot find the path specified" 的 Git 提交错误