31

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

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 

但这没有用,我还能做些什么吗?我会提供任何需要的细节

4

9 回答 9

26

为了解决这个问题,

  1. sudo R CMD javareconf

  2. 将以下内容添加到 /etc/environment. 每次您的机器重新启动时都会设置此项。

    LD_LIBRARY_PATH=/usr/lib/jvm/default-java/jre/lib/amd64/server/

    (改变你的路径)

  3. 运行以下命令:

    源 /etc/环境

  4. rstudio服务器重启
于 2017-04-18T07:41:58.797 回答
25

当我尝试在 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")
于 2015-11-08T10:44:58.103 回答
12

如果上述方法均无效,请尝试此操作并稍后感谢我(通用答案):)

R CMD javareconf -e
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LD_LIBRARY_PATH
于 2017-02-02T18:16:23.950 回答
2
  • 每次我想打开 RStudio 时,我都通过运行以下命令解决了类似的问题。转到包含 rstudio 可执行文件的文件夹,打开终端并键入:

    LD_LIBRARY_PATH=/库/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/server:打开-a rstudio

    当然,您必须根据您的 Java 版本更改路径。

  • 如果之前的解决方案不起作用,请尝试阅读这篇文章: http ://allanino.me/blog/programming/installing-some-r-packages/ 。

  • 如果此解决方案也不起作用,您最后的机会是安装rJava从源代码编译它。

于 2015-02-11T21:19:46.620 回答
2

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

于 2019-02-04T20:55:35.200 回答
2

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

脚步:

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

  2. 根据您使用的 jre,找到libjvm.so通常位于路径中的文件。usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server签入 $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 服务器

于 2017-08-29T06:42:54.880 回答
0

好吧,正如@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}

于 2018-08-31T07:08:17.913 回答
0

如果我们在 Unix Box 上运行两个 R 版本,则添加答案。

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

引起原因:将java的版本从更新java-1.8.0-openjdk-1.8.0.262.b10-1.el7_9.x86_64java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64

就我而言,我们有两个版本的 R

  1. 3.6.0
  2. 3.6.2

我们仅将上述@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 终端中检查了如下LD_LIBRARY_PATH关联:3.6.0

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"
于 2021-01-20T10:25:21.677 回答
0

我们正在使用 AZUL。我可以看到 ZST 没有正确添加。添加ZST后,它工作正常。

于 2019-10-15T19:41:45.107 回答