java - 最近更新了R/RStudio,rJava无法加载。

标签 java r rjava

我最近将 R 更新到 3.4,将 RStudio 更新到 RStudio v1.0.143 预览版,以便它与 R 的图像更新和绘图兼容,但现在我在尝试加载 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
Error: package ‘rJava’ could not be loaded

我目前运行的是 MacOSX 10.12.4 Sierra

非常感谢任何有关如何解决此问题的帮助。

最佳答案

正如 @mko 已经指出的那样,macOS/R/rJava 的混合很困惑,尽管它非常有用。我在每个版本的几个版本中都一直在争论这个问题,无论你多么小心,它似乎都会定期再次出现。也就是说,有很多事情需要牢记:

  • 您需要安装 JDK,而不仅仅是 JRE。
  • 如果不使用已弃用的 Apple 版本的 Java 1.6,R 的 javareconf 脚本将无法正确处理 libjvm.dylib 的位置。
  • 最好使用最新的 JDK 版本,以便从最新的安全增强功能中受益。
  • 升级到新的 Java 版本后,R 的 javareconf 脚本无法正确重新配置 R;它需要重新安装 R 才能正确执行。

因此,请记住这些:

  • 安装/更新 JDK。
  • 最好为您计划使用的任何 JDK 安装正确设置 JAVA_HOME(通常在 ~/.bashrc~/.bash_profile 中) em>)。
  • 如果尚未安装 XQuartz,请安装(如 @mko 提到的)。
  • (重新)安装 R(以允许针对新 Java 安装进行正确的 R 配置。
  • 使用自定义参数运行 javareconf 脚本,以使其针对现代 JDK 进行配置。
  • 将 Java 运行时链接到 R 的库文件夹即可找到它。

对 javareconf 的自定义调用只需在终端上执行几行: 首先,确保JAVA_HOME已按要求设置:

# Make sure JAVA_HOME is set as required.
export JAVA_HOME=${JAVA_HOME:-$(/usr/libexec/java_home)}
# Obtain location of Java runtime library.
export LIBJVM=$(find "${JAVA_HOME}" -name 'libjvm.dylib')
# Reconfigure R using custom call to javareconf script.
R CMD javareconf JAVA_LIBS="${LIBJVM}" JAVA_LD_LIBRARY_PATH="${LIBJVM}" JAVA_CPPFLAGS="'-I${JAVA_HOME}/include -I${JAVA_HOME}/include/darwin -I$(dirname "${LIBJVM}")'"
# Link Java runtime to R library folder so it can be found.
ln -fs "$LIBJVM" /Library/Frameworks/R.framework/Libraries

现在您应该能够启动 R 并安装 rJava。

如果您使用的是 R 的 Homebrew 安装(需要使用 --with-java 选项进行安装),请使用此行来链接 Java 运行时:

ln -fs "$LIBJVM" "$(brew --prefix r)/lib"

该过程需要 macOS 上的管理员权限(除非通过 Homebrew 安装 R)。 R 包安装程序为各种文件提供了管理员权限,因此幸运的是不需要 sudo 。作为引用,我最近还写了一篇简短的article关于这个问题。

关于java - 最近更新了R/RStudio,rJava无法加载。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379025/

相关文章:

java - 在 RStudio 中使用 RWeka M5P 会产生 java.lang.NoClassDefFoundError : no/uib/cipr/matrix/Matrix

java - 如何在 OSX 上配置 rJava 以选择正确的 JVM——.jinit() 失败

java - Stanford NLP 中的所有注释都支持阿拉伯语吗?

java - 这个类名在java "1.org.hibernate.tutorial.domain6.TUser@198cb3d "中意味着什么?

java - Spring Data JPA 重复条目

r - 如何在 RMarkdown 中将 SVG 设置为默认渲染?

r - base::assign (".ptime", proc.time(), pos = "CheckExEnv") 使用 devtools::check 时出现错误

java - 如何在 Java Swing 应用程序中管理来自 Controller 的 View 更新

r - 在具有多个条目的 R Shiny 数据表中搜索列