问题描述
尝试使用此代码在我的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")
次佳解决方案
要解决这个问题,
-
运行sudo R CMD javareconf
-
将以下内容添加到/etc /environment。然后,每次机器重新启动时都会设置此项。 LD_LIBRARY_PATH = /usr /lib /jvm /default-java /jre /lib /amd64 /server /(更改路径)
-
运行以下命令:source /etc /environment
-
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
从源代码编译它。
第五种方案
如果有人现在来这里,请尝试以下方法:
脚步:
-
找到你的R位置。它将存储在
rserver.conf
文件中的rsession-ld-library-path
中。或者只是做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服务器