尝试使用此代码在我的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
但那不起作用,还有什么我可以做的吗?我将提供任何所需的详细信息
答案 0 :(得分:19)
当我尝试在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 :(得分:16)
要解决这个问题,
sudo R CMD javareconf
将以下内容添加到/ etc / environment。然后,每次机器重新启动时都会设置此项。
LD_LIBRARY_PATH = / usr / lib / jvm / default-java / jre / lib / amd64 / server /
(改为路径)
source / etc / environment
答案 2 :(得分:7)
如果上述情况均无效,请尝试此操作,稍后再次感谢我(通用答案):)
R CMD javareconf -e
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LD_LIBRARY_PATH
答案 3 :(得分:2)
每次我想打开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
从源代码编译它。
答案 4 :(得分:2)
如果有人现在来这里,请尝试以下方法:
步骤:
找到您的R位置。它将存储在rsession-ld-library-path
rserver.conf
文件中。或者只是做which R
。位置通常为/usr/lib64/R/lib
或/usr/lib64/microsoft-r/3.3/lib64/R/lib
查找libjvm.so
文件,该文件通常位于usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server
路径中,具体取决于您使用的jre。签入$ 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
重启R服务器
答案 5 :(得分: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}
答案 6 :(得分:0)
通过{p>检查$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
软件包。
答案 7 :(得分:0)
我们正在使用AZUL。我可以看到未正确添加ZST。添加ZST后,它可以正常工作。
答案 8 :(得分:0)
如果我们有两个 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 终端中检查了与 LD_LIBRARY_PATH
关联的 3.6.0
,如下所示:
Sys.getenv("LD_LIBRARY_PATH")
O/P
[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"