gpt4 book ai didi

java - 在 R 3.6 上为 ubuntu 仿生海狸安装 rJava 时出现 "Unable to run a simple JNI program"错误消息

转载 作者:行者123 更新时间:2023-12-04 21:09:42 26 4
gpt4 key购买 nike

我有一个非常常见的问题,即 rJava 无法在 Ubuntu 上正确安装。
这个问题已经在多个地方讨论过here , here , here ,仅举几例。

基本问题是在安装 rJava 包时,会产生以下错误消息

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’

这个问题有各种密切相关的解决方案。他们中的大多数使用 sudo R CMD javareconf为 R ( also a -e variant ) 配置 Java。 Some建议设置 JAVA_HOME环境变量中的路径 ( others say not to)。 Others建议在 others 期间卸载并重新安装 R建议从 cran 安装 rJava。有几个人推荐 update alternatives .这些解决方案还有其他变体。

我已经尝试了以上所有方法的组合,但一无所获,所以显然我做错了什么。

进入 echo $JAVA_HOME返回
/usr/lib/jvm/java-11-openjdk-amd64
我的等/环境看起来像这样
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"

当我运行 R CMD javaconf 时,它看起来像这样
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.

我做错了什么,如何让 rJava 正确安装?

编辑:

已经成功地使用 sudo apt-get install r-cran-rjava 安装了 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 '/usr/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory

最佳答案

我已经用原始海报进行了调查(我们在同一个地方工作),问题是在 OpenJDK11 中他们移动了一些 .so JVM 所在的文件,特别是 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 结尾并启动一个新的外壳(或 source ~/.bashrc )。

这是我们必须为 OpenJDK 的中央安装解决的问题,例如这里: https://github.com/UCL-RITS/rcps-buildscripts/blob/master/adoptopenjdk-11.0.3_install.sh#L46

如果您想使用从 Gnome 启动的 Rstudio 进行这项工作,您需要将该目录添加到 ldconfig .

root (或使用 sudo )在 /etc/ld.so.conf.d/ 中创建文件你应该用 .conf 来称呼它扩展名,例如 java.conf其中包含以下行:
/usr/lib/jvm/java-1.11.0-openjdk-amd64/lib/server

然后作为 root
ldconfig -v

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

关于java - 在 R 3.6 上为 ubuntu 仿生海狸安装 rJava 时出现 "Unable to run a simple JNI program"错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com