当前位置: 首页>>技术问答>>正文


libjvm.so:无法打开共享对象文件:没有这样的文件或目录

, , , ,

问题描述

尝试使用此代码在我的14.10 ubuntu上的R上安装rJava包

if (!require(rJava)) install.packages('rJava')

几乎没有与java相关的错误,包括jni问题,重新安装jdk后,并尝试再次运行相同的代码,得到了该错误

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 

但这没用,还有什么我可以做的吗?我会提供任何所需的细节

最佳解决方案

当我试图在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")

次佳解决方案

要解决这个问题,

  1. 运行sudo R CMD javareconf

  2. 将以下内容添加到/etc /environment。然后,每次机器重新启动时都会设置此项。 LD_LIBRARY_PATH = /usr /lib /jvm /default-java /jre /lib /amd64 /server /(更改路径)

  3. 运行以下命令:source /etc /environment

  4. rstudio服务器重启

第三种解决方案

以防上述情况均无效,请试试这个并稍后再次感谢我(通用答案):)

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从源代码编译它。

第五种方案

如果有人现在来这里,请尝试以下方法:

脚步:

  1. 找到你的R位置。它将存储在rserver.conf文件中的rsession-ld-library-path中。或者只是做which R。位置通常是/usr/lib64/R/lib/usr/lib64/microsoft-r/3.3/lib64/R/lib

  2. 找到libjvm.so文件,该文件通常位于usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server路径中,具体取决于您使用的jre。签入$ JAVA_HOME环境。

  3. 使用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创建符号链接

  4. 重启R服务器

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7158.html,未经允许,请勿转载。