rJava 在 R(3.4.1) 中加载,带有 OS Sierra



我在最新版本的R(3.4.1(,Mac(10.12.5(和Java VM(1.8.0_131,x86_64:(中遇到了rJava的问题。

问题:

我尝试遵循本指南

scottdhoover.wordpress.com/2013/03/05/a-basic-rjava-example/

为了能够在R中运行rJava。

来自 r 的一些代码:

library(rJava( .jinit("( .jclassPath(( [1] "/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/java">

s <- .jnew("java/lang/String", "Hello World!"( .jcall(s, "I", "length"( [1] 12

所以实际上是在工作..但是当我尝试使用我的文件时:

.jaddClassPath("/Users/Camilo/Desktop/20170711_Java2R"( .jclassPath(( [1] "/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/java" "/Users/Camilo/Desktop/20170711_Java2R">

myExchange <- .jnew("myExchange"( .jnew("myExchange"( 中的错误:java.lang.ClassNotFoundException

其中文件 myExchange.java 与指南中的文件相同,并且位于桌面的文件夹中。

我做了什么:

基本上我试图从R安装rJava,但没有工作。然后我遵循两个指南,以便能够从源代码加载 R 中的包 rJava

我遵循了本指南:

https://github.com/snowflakedb/dplyr-snowflakedb/wiki/Configuring-R-rJava-RJDBC-on-Mac-OS-X(为了能够加载rJava(

其中两者

R CMD javareconf
/usr/libexec/java_home -V

看起来完全符合要求。

为了摆脱人们通常遇到的OpenMP问题,我遵循以下指南:

http://thecoatlessprofessor.com/programming/openmp-in-r-on-os-x/#clang-before-3-4-0(摆脱所有人都有的OpenMP问题(。

最后,我使用此代码创建一个符号链接

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

并且我能够从 R 安装库。

但!当我从终端尝试时,出现此错误

ld: library not found for -lomp
clang-4.0: error: linker command failed with exit code 1 (use -v to see    invocation)
make[2]: *** [libjri.jnilib] Error 1
make[1]: *** [src/JRI.jar] Error 2
make: *** [jri] Error 2
ERROR: compilation failed for package ‘rJava’

所以我应该:库或符号链接也必须丢失......但是没有像llvm中那样的文件(已经在llvm中使用ld解决:找不到-lomp的库(

我知道错误"ClassNotFoundExceptions"可能与PATH有关,但它应该没问题,因为一开始就声明了。

顺便说一句,我还检查.R/Makevars 文件看起来像这样

CC=/usr/local/clang4/bin/clang    
CXX=/usr/local/clang4/bin/clang++
LDFLAGS=-L/usr/local/clang4/lib

有什么想法如何解决吗?提前感谢!我希望这一点是清楚的。

对我来说,解决方案是安装 https://github.com/coatless/r-macos-clang 并添加链接

sudo ln -s /usr/local/clang4/lib/libomp.dylib /usr/local/lib/libomp.dylib

R CMD javareconf之前,我unset JAVA_HOME.

这是一个令人困惑的问题,取决于您的 R 版本。

对于Mac Sierra上的R 3.4用户,请忽略有关gcc,clang,llvm的所有噪音。R 3.4 使用 clang4。时期。所以你应该做

  • 安装 clang4
  • 改变。R/Makevars 指向 clang4
  • 安装 Java 8
  • R CMD javareconf
  • 要解决链接问题,请sudo ln -s /usr/local/clang4/lib/libomp.dylib /usr/local/lib/libomp.dylib

然后你应该能够成功安装 rJava。

此外,rJava 在较旧的 RStudio 中无法正确加载。因此,请确保您已升级到最新的 RStudio。

最新更新