sudo R CMD javareconf解决方案不工作

sudo R CMD javareconf解决方案不工作,java,r,stdio,rjava,Java,R,Stdio,Rjava,我试图在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.frame

我试图在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解释器:/usr/bin/Java
Java版本:11.0.6
Java主路径:/Library/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/home
Java编译器:/usr/bin/javac
Java头文件gen.:/usr/bin/javah
Java归档工具:/usr/bin/jar
试图编译和链接JNI程序
检测到JNICPP标志:-I$(JAVA\u HOME)/include-I$(JAVA\u HOME)/include/darwin
检测到JNI链接器标志:-L$(JAVA_HOME)/lib/server-ljvm
clang-I“/库/框架/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:警告:没有这样的系统根目录:'/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'[-Wmissing sysroot]
在conftest.c中包含的文件中:1:
/Library/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/Home/include/jni.h:39:10:致命错误:
找不到“stdio.h”文件
#包括
^~~~~~~~~
生成1个错误。
make:**[conftest.o]错误1
无法编译JNI程序
JAVA_HOME:/Library/JAVA/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/HOME
Java库路径:
JNI cpp标志:
JNI链接器标志:
在/Library/Frameworks/R.framework/Resources中更新Java配置
完成。

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

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

  • 转到此页:

  • 下载并安装11.0.1

  • sudo R CMD javareconf

  • sudo Rstudio#提升隐私

  • 安装软件包(“rJava”)


  • 如果这不起作用,请从步骤2重试,但使用11.0.6 from

    最终的技巧是向Rstudio显示用户Rmadillo在此处标识的位置:


    每次使用rJava软件包之前都要运行这个程序。

    我看到您运行的是linux机器。安装rJava有一些先决条件。运行这些命令。“sudo apt get install-y default jre”“sudo apt get install-y default jdk”“sudo R CMD javareconf”然后以sudo用户身份打开R并运行“install.packages”(“rJava”)”退出RStudio并再次打开。更多信息请访问他在Mac上。您可以从
    /Library/…
    R
    Java
    macOS
    中看出它们是造成整个混乱的因素:)此外,对于较旧版本的
    R
    ——在您的情况下,看起来还没有安装
    XCode
    命令行工具。您可以从
    App Store
    免费安装
    XCode
    。由于您使用的是Java 11,我认为这可能是您的最佳选择:谢谢@Brandon,第四行对我不起作用,因为无法识别Rstudio cmd。即使没有它,库(rJava)现在也可以工作,但运行依赖于它的其他函数会使RStudio崩溃,因为它似乎仍在搜索其他地方。我现在已经安装了这两个工具,并通过在.bash\u配置文件中调整java\u home在它们之间切换。您是否建议删除不同的版本?它可能只是
    sudo rstudio
    小写。我不是在mac电脑上。当你在控制台上运行R时,它会给你同样的错误吗?(R,然后是R回复处的
    library(rJava)
    。最后的诀窍是向Rstudio显示用户Rmadillo标识的位置:@ThijsvandenBurg将其添加为答案!