![](/img/trans.png)
[英]Trouble in Setting Java Environment Path on Ubuntu (libjvm.so: cannot open shared object file: No such file or directory)
[英]libjvm.so: cannot open shared object file: No such file or directory
尝试使用此代码在我的 14.10 ubuntu 上的 R 上安装 rJava package
if (!require(rJava)) install.packages('rJava')
在重新安装 jdk 后,出现与 java 相关的一些错误,包括 jni 问题,并尝试再次运行相同的代码,得到了那个错误
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/usr/local/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/usr/local/lib/R/site-library/rJava’
Warning in install.packages :
installation of package ‘rJava’ had non-zero exit status
The downloaded source packages are in
‘/tmp/RtmpfFjrp0/downloaded_packages’
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called ‘rJava’
寻找解决方案,找到几乎所有建议(对于 x64)执行这些命令的人
export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-oracle/lib/amd64:/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server
sudo R CMD javareconf
但这没有用,我还能做些什么吗? 我会提供任何需要的细节
为了解决这个问题,
须藤 R CMD javareconf
将以下内容添加到 /etc/environment. 这将在您的机器每次重新启动时设置。
LD_LIBRARY_PATH=/usr/lib/jvm/default-java/jre/lib/amd64/server/
(更改为您的路径)
源 /etc/environment
当我尝试在 RStudio 中加载 rJava 时,我遇到了同样的错误。 以下解决方案对我有用
1) sudo rstudio-server stop
2) export LD_LIBRARY_PATH=/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/jre/lib/amd64/default
3) sudo rstudio-server start
执行上述步骤后,我能够在 RStudio 中成功运行以下内容
> library("DBI")
> library("rJava")
> library("RJDBC")
如果上述方法均无效,请尝试此操作并稍后感谢我(通用答案):)
R CMD javareconf -e
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LD_LIBRARY_PATH
每次我想打开 RStudio 时,我都通过运行以下命令解决了类似的问题。 转到包含 rstudio 可执行文件的文件夹,打开终端并键入:
LD_LIBRARY_PATH=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/server: open -a rstudio
当然,您必须根据您的 Java 版本更改路径。
如果之前的解决方案不起作用,请尝试阅读这篇文章:http ://allanino.me/blog/programming/installing-some-r-packages/ 。
如果此解决方案也不起作用,那么您最后的机会是安装rJava
并从源代码编译它。
如果现在有人来这里,请尝试以下方法:
脚步:
找到您的 R 位置。 它将存储在rserver.conf
文件中的rsession-ld-library-path
中。 或者只是通过执行which R
。 位置通常是/usr/lib64/R/lib
或/usr/lib64/microsoft-r/3.3/lib64/R/lib
根据您使用的 jre,找到通常位于usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server
路径中的libjvm.so
文件。 签入 $JAVA_HOME 环境。
使用ln -s
sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib64/microsoft-r/3.3/lib64/R/lib/libjvm.so
创建符号链接sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib64/microsoft-r/3.3/lib64/R/lib/libjvm.so
重启 R 服务器
检查$JAVA_HOME
指向正确的位置
echo $JAVA_HOME
我正在使用 openjdk,但是$JAVA_HOME
指向一些不存在的 oracle-java 文件夹。
修复$JAVA_HOME
运行
sudo R CMD javareconf
检查输出。 Java headers gen.
应该指向/usr/bin/javah
。 例如:
djhurio@Skyforger ~ $ sudo R CMD javareconf
Java interpreter : /usr/lib/jvm/default-java/bin/java
Java version : 11.0.1
Java home path : /usr/lib/jvm/default-java
Java compiler : /usr/lib/jvm/default-java/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/lib/jvm/default-java/bin/jar
在此之后,我可以安装和加载rJava
包。
那么,作为@ user3673指出这个,对我来说,解决办法是更改以下行/usr/lib/R/etc/ldpaths
:
: ${R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/lib/amd64/server}
通过这个:
: ${R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/amd64/server}
我们正在使用 AZUL。 我可以看到 ZST 没有正确添加。 添加ZST后,它工作正常。
如果我们有两个 R 版本在 Unix Box 上运行,请添加答案。
问题: libjvm.so:无法打开共享对象文件:没有这样的文件或目录
引起原因:将java版本从java-1.8.0-openjdk-1.8.0.262.b10-1.el7_9.x86_64
为java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64
就我而言,我们有两个版本的 R
我们仅将上述@minhas23 解决方案应用于 3.6.2,该解决方案设置为 Rstudio-server-pro 应用程序的默认 R 版本。
但是当我们选择 R 版本为 3.6.0 时,我们遇到了类似的错误,然后我们执行了以下步骤:
export R_VERSION=3.6.0
/opt/R/${R_VERSION}/bin/R --version
unlink /usr/local/bin/R
unlink /usr/local/bin/Rscript
ln -s /opt/R/${R_VERSION}/bin/R /usr/local/bin/R
ln -s /opt/R/${R_VERSION}/bin/Rscript /usr/local/bin/Rscript
rstudio-server stop
export LD_LIBRARY_PATH=/usr/lib/jvm/jre/lib/amd64/server
R CMD javareconf
我们已经在 R 终端中检查了与3.6.0
相关的LD_LIBRARY_PATH
如下:
Sys.getenv("LD_LIBRARY_PATH")
开/关
[1] "/opt/R/3.6.0/lib/R/lib:/usr/local/lib:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64/server"
通过搜索 libjvm.so 文件并将 LD_LIBRARY_PATH 设置为该目录,我在 Dockerfile 中为 rJava 和 xlsx 修复了此问题:
RUN find / -name libjvm.so
ENV LD_LIBRARY_PATH=/usr/lib/jvm/java-11-openjdk-amd64/lib/server
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.