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

问题描述 投票:23回答:7

要安装R上的rJava包,在我的Ubuntu 14.10,使用此代码

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 

但没有工作,还有什么我可以做什么?我公司将提供任何需要的细节

java r ubuntu rjava ubuntu-14.10
7个回答
19
投票

我得到当我试图加载rJava在RStudio同样的错误。下面的解决方案为我

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")

16
投票

为了解决这个问题,

  1. 运行 萨马德的兴趣jabharekampha
  2. 将以下内容添加到/ etc /环境。这将被设为您的每次重新启动机器。 LD_LIBRARY_PATH = / usr / lib中/ JVM /缺省的java / JRE / LIB / AMD64 /服务器/ (改变你的路径)
  3. 运行以下命令: 源的/ etc /环境
  4. rstudio服务器重启

7
投票

如果没有上述工程的,试试这个,感谢我后来(通用的答案):)

R CMD javareconf -e
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LD_LIBRARY_PATH

2
投票
  • 我通过我想开RStudio每次运行下面的命令来解决类似的问题。转到含有rstudio可执行文件的文件夹,打开终端输入: LD_LIBRARY_PATH = /图书馆/的Java / JavaVirtualMachines / jdk1.7.0_51.jdk /内容/首页/ JRE / lib目录/服务器:开放-a rstudio 当然,你必须改变根据您的Java版本的路径。
  • 如果前面的解决方案不起作用,尝试阅读这篇文章:http://allanino.me/blog/programming/installing-some-r-packages/
  • 如果这个解决方案没有工作过,你有最后的机会就是安装rJava从源代码编译它。

2
投票

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

脚步:

  1. 寻找你的R位置,它会被存储在rsession-ld-library-path文件rserver.conf。或者只是做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服务器

1
投票

检查$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包。


0
投票

那么,作为@user3673指出this,对我来说,解决办法是更改以下行/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}

© www.soinside.com 2019 - 2024. All rights reserved.