【问题标题】:sudo R CMD javareconf solution not workingsudo R CMD javareconf 解决方案不起作用
【发布时间】:2020-02-09 18:16:06
【问题描述】:

我正在尝试在 RStudio 中运行 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.6/Resources/library/rJava/libs/rJava.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so
  Reason: image not found

使用 rJava 问题的通用解决方案,'sudo R CMD javareconf' 不起作用并给我这个输出:

Java interpreter : /usr/bin/java
Java version     : 11.0.6
Java home path   : /Library/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/Home
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar

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/jdk-11.0.6.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/Home/include/darwin  -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c conftest.c -o conftest.o
clang-7: warning: no such sysroot directory: '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk' [-Wmissing-sysroot]
In file included from conftest.c:1:
/Library/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/Home/include/jni.h:39:10: fatal error: 
      'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program


JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/Home
Java library path: 
JNI cpp flags    : 
JNI linker flags : 
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.

之前有没有人遇到过这个错误并且知道如何解决它?

【问题讨论】:

标签: java r stdio rjava


【解决方案1】:

在升级到 Catalina 后,我最近遇到了一位同事这样的问题。我的解决方案是再次安装有问题的 JDK 版本。看起来您的系统在 11.0.6 和 11.0.1 之间存在混淆。

  1. 转到此页面: https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase11-5116896.html

  2. 下载并安装 11.0.1

  3. sudo R CMD javareconf

  4. sudo Rstudio # 提升权限

  5. install.packages("rJava")

如果这不起作用,请从第 2 步开始重试,但使用来自 https://www.oracle.com/technetwork/java/javase/overview/index.html 的 11.0.6

【讨论】:

  • 感谢@Brandon,第 4 行对我不起作用,因为无法识别 Rstudio cmd。即使没有它,library(rJava) 现在也可以工作,但运行依赖它的其他函数会使 RStudio 崩溃,因为它仍在搜索其他地方。我现在都安装了,并通过调整 .bash_profile 中的 java_home 在它们之间切换。您是否建议删除不同的版本?
  • 它可能只是 sudo rstudio 小写。我不是在这里使用 Mac。
  • 在控制台中运行 R 时是否会出现同样的错误? (R,然后在 R repl 处 library(rJava)
  • 最后的诀窍是向 Rstudio 显示用户 Rmadillo 在这里识别的位置:github.com/rstudio/rstudio/issues/2254
  • @ThijsvandenBurg 添加它作为答案!
【解决方案2】:

最终的诀窍是向 Rstudio 显示用户 Rmadillo 在此处识别的位置:

github.com/rstudio/rstudio/issues/2254

只需在每次使用 rJava 包之前运行它即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2015-06-19
    • 1970-01-01
    • 2012-12-06
    • 2011-03-03
    • 2019-11-14
    • 1970-01-01
    相关资源
    最近更新 更多