当前位置: 首页 > 知识库问答 >
问题:

在R3.6上安装rJava for ubuntu bionic beaver时出现“无法运行简单JNI程序”错误消息

郜德容
2023-03-14

我有一个很常见的问题,rJava不能正确地安装在Ubuntu上。这个问题已经在这里,这里,这里,举几个例子。

configure: error: Unable to run a simple JNI program. Make sure you have configured R with Java support (see R documentation) and check config.log for failure reason.
Warning in system(cmd) : error in running command
ERROR: configuration failed for package ‘rJava’
* removing ‘/home/jonno/R/x86_64-pc-linux-gnu-library/3.6/rJava’

输入echo$java_home返回

/usr/lib/jvm/java-11-openjdk-amd64

我的etc/环境如下所示

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/$
MKL_THREADING_LAYER=GNU
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
Java interpreter : /usr/lib/jvm/java-11-openjdk-amd64/java
Java version     : 11.0.4
Java home path   : /usr/lib/jvm/java-11-openjdk-amd64
Java compiler    : /usr/lib/jvm/java-11-openjdk-amd64/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/lib/jvm/java-11-openjdk-amd64/bin/jar

trying to compile and link a JNI program 
detected JNI cpp flags    : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -I/usr/lib/jvm/java-11-openjdk-amd64/include -I/usr/lib/jvm/java-11-openjdk-amd64/include/linux    -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-uuRxut/r-base-3.6.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-11-openjdk-amd64/lib/server -ljvm -L/usr/lib/R/lib -lR


JAVA_HOME        : /usr/lib/jvm/java-11-openjdk-amd64
Java library path: $(JAVA_HOME)/lib/server
JNI cpp flags    : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
Updating Java configuration in /usr/lib/R
Done.
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 '/usr/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory

共有1个答案

子车鸿才
2023-03-14

我已经研究了最初的海报(我们在同一个地方工作),问题是在OpenJDK11中,他们移动了一些JVM所在的.so文件,特别是libjvm.so,这些文件在Ubuntu包中现在位于/usr/lib/JVM/java-1.11.0-openjdk-amd64/lib/server/中。

这意味着,即使您使用apt install r-cran-rjava安装了用于rJava的Ubuntu包,当您尝试Library(rJava)时,它也会失败。

解决方案是将/usr/lib/jvm/java-1.11.0-openjdk-amd64/lib/server/添加到$ld_library_path中,方法是添加:

export LD_LIBRARY_PATH=/usr/lib/jvm/java-1.11.0-openjdk-amd64/lib/server:$LD_LIBRARY_PATH

~/.bashrc结束并启动一个新的shell(或source~/.bashrc)。

这是我们必须为OpenJDK的中央安装修复的问题,例如:https://github.com/ucl-rits/rcps-buildscripts/blob/master/adoptopenjdk-11.0.3_install.sh#l46

如果您希望在从Gnome启动的Rstudio中使用该目录,则需要将该目录添加到ldconfig

/usr/lib/jvm/java-1.11.0-openjdk-amd64/lib/server

然后作为运行

ldconfig -v

这应该将目录添加到通过GNOME搜索启动的可执行文件的位置。这个问题的特殊部分(GNOME忽略bashrc中的设置)在Ubuntu中至少从9.04开始就存在问题(https://bugs.launchpad.net/Ubuntu/+source/xorg/+bug/366728/)。

 类似资料:
  • 我尝试了这里提到的所有解决方案,但没有一个奏效。 这里奇怪的事情是,我试图运行我的应用程序的Android模拟器的第一次,我得到了同样的错误。我从来没有在那里安装应用程序,但我得到了同样的错误。 你知道是什么导致了这个错误吗?

  • 在命令提示符下通过pip installer for Python3.7安装pandas时,我反复遇到以下错误 我已经通过管理员运行了该命令,但它没有运行。

  • 我已经成功安装了pyobjc核心,但当我尝试安装pyobjc时,我得到了一个错误: (第一部分) 错误:命令出错,退出状态为1:Command:/Library/framework/python . framework/Versions/3.9/bin/python 3.9-u-c ' import sys,setuptools,tokenize。sys . argv[0]= ' " ' " '/

  • 所以当我的终端显示我没有python时,我试图安装python,这很奇怪,因为我认为我有。当我试图找到它时,我找不到它,我使用如下命令: 当我试图删除python时(我正在尝试随机操作): 然后此错误将显示:操作无法完成。无法找到Java运行时。请访问http://www.java.com以获取有关安装Java的信息。 当我尝试用安装时 然后会抛出相同的Java错误。 更新:抱歉,我在macOS蒙

  • 我是新来的节点,有点超出我的深度。在Mac OS X和Centos 6上都遇到此错误。发生在我尝试过的所有npm install xxx命令中。任何关于如何避免这一错误的建议都将不胜感激。 类似于npm,安装时会出现节点gyp错误,但我的用户名中没有空格,这就解决了他的问题。

  • 嘿,伙计们,我试图ru我的模拟器,但当我运行它,它给我这个错误: “安装下列Android SDK包失败,因为某些许可证尚未被接受。构建-工具;30.0.2 Android SDK构建-工具30.0.2若要构建此项目,请接受SDK许可协议并使用Android Studio SDK管理器安装缺少的组件。或者,若要将许可协议从一个工作站转移到另一个工作站,请参见http://d.Android.com