rJava不会加载到R 3.4.2和MacOS Sierra 10.12.6中

时间:2017-11-02 20:01:59

标签: r macos rjava

这是我得到的错误:

> library(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

我认为这绝不是一个独特的问题。我已尝试过解决方案hereherehere。没有成功。

更多细节:我使用R GUI,但我也无法通过R终端加载rJava。我也没有在R 3.3.s上与rJava有任何问题

2 个答案:

答案 0 :(得分:1)

这里有两个选项:

  1. 获取R的旧版本并使用预编译版本的rJava

  2. 获取rJava源代码并自行编译

  3. 请注意,rJava(最新的源代码)需要一些未嵌入XCode和clang内部的功能,这些功能可通过AppStore获得。在构建rJava包时,您需要做一些低级别的工作。

    您可以在此处找到详细说明:http://www.owsiak.org/r-3-4-rjava-macos-and-even-more-mess/

    如果您决定使用较旧版本的R,那么它仍然很难让它发挥作用,但更不用说:http://www.owsiak.org/r-java-rjava-and-macos-adventures/

答案 1 :(得分:1)

不同版本的MAC OS的JAVA_HOME路径不同。 在某些情况下,有/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)