【问题标题】:rJava loading in R(3.4.1) with OS Sierra使用 OS Sierra 在 R(3.4.1) 中加载 rJava
【发布时间】:2017-07-12 07:36:38
【问题描述】:

我在最新版本的 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 的一些代码:

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

s

实际上是这样。但是当我尝试使用我的文件时:

.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

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: library not found for -lomp 解决)

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

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

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

任何想法如何解决它?提前致谢!我希望这很清楚。

【问题讨论】:

  • 一个月后没有人可以帮助我...有什么想法吗?

标签: java r macos


【解决方案1】:

对我来说,解决方案是安装 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 3.5.1 的 High Sierra 中为 clang6 修改了它,并成功使用版本 10 Java SDK 编译了 rJava 0.9-10
  • 我可能应该澄清一下,在指向 clang6 的 Makevars 的设置中,只有创建 rJava 0.9-10 才能编译所需的符号链接。没有走与cloud.r-project.org/bin/macosx/tools 提供的不同的clang6 的路线在rJava 问题页面上报告此问题引起了Simon Urbanek 的回应,这应该已经存在于我的Apple 系统中,但显然不是.
【解决方案2】:

这是一个令人困惑的问题,取决于您的 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。

【讨论】:

    猜你喜欢
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2015-02-24
    相关资源
    最近更新 更多