错误:刚才无法加载已安装的软件包

时间:2012-10-13 11:33:15

标签: java eclipse r ubuntu statet

当我尝试在Eclipse中运行R控制台时,出现了这个错误:

....Please make sure that R package 'rj' (1.1 or compatible) is installed...

所以我尝试将它安装在R控制台中,如下所示:

install.packages(c("rj", "rj.gd"), repos="http://download.walware.de/rj-1.1")

并收到此错误:

 ** testing if installed package can be loaded
 Error : .onLoad failed in loadNamespace() for 'rj.gd', details:
 call: dyn.load(file, DLLpath = DLLpath, ...)
 error: unable to load shared object '/home/alex/R/x86_64-pc-linux-gnu-library/2.15/rj.gd/libs/rj.gd.so':
 libjvm.so: cannot open shared object file: No such file or directory
 Error: loading failed
 Execution halted
 ERROR: loading failed

我发现在使用install.packages("rJava")安装rJava时会出现类似的错误:

** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/home/alex/R/x86_64-pc-linux-gnu-library/2.15/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed

当我运行sudo R CMD javareconf时,我得到了这个输出:

Java interpreter : /usr/bin/java
Java version     : 1.7.0
Java home path   : /usr/lib/jvm/java-7-oracle/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
NOTE: Your JVM has a bogus java.library.path system property!
Trying a heuristic via sun.boot.library.path to find jvm library...
Java library path: $(JAVA_HOME)/lib/amd64:$(JAVA_HOME)/lib/amd64/server
JNI linker flags : -L$(JAVA_HOME)/lib/amd64 -L$(JAVA_HOME)/lib/amd64/server -ljvm
JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux

Updating Java configuration in /etc/R
Done.
顺便说一下,我的配置是:

Ubuntu 11.10 64bit
Eclipse 3.7
Oracle-1.7-jdk
R version 2.15.1 

11 个答案:

答案 0 :(得分:77)

对于Linux(Ubuntu)用户:如果安装了oracle-java (7/8)。它将在此位置/usr/lib/jvm并且sudo访问权限。

使用以下条目创建文件/etc/ld.so.conf.d/java.conf

/usr/lib/jvm/java-8-oracle/jre/lib/amd64
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server

(用java-7-oracle替换java-8-oracle取决于你的java版本)

然后:

sudo ldconfig

重新启动RStudio,然后安装rJava包。

OR

另一种方法是使用从命令LD_LIBRARY_PATH获取的Java库路径的值导出R CMD javareconf -e并运行install.packages

答案 1 :(得分:28)

我遇到了类似的问题,并且能够通过运行

来解决它
R CMD javareconf -e

输出R CMD javareconf -e

Java interpreter : /export/apps/jdk/JDK-1_6_0_27/jre/bin/java
Java version     : 1.6.0_27
Java home path   : /export/apps/jdk/JDK-1_6_0_27
Java compiler    : /export/apps/jdk/JDK-1_6_0_27/bin/javac
Java headers gen.: /export/apps/jdk/JDK-1_6_0_27/bin/javah
Java archive tool: /export/apps/jdk/JDK-1_6_0_27/bin/jar
Java library path: /export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64/server:/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64:/export/apps/jdk/JDK-1_6_0_27/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
JNI linker flags : -L/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64/server -L/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64 -L/export/apps/jdk/JDK-1_6_0_27/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm
JNI cpp flags    : -I/export/apps/jdk/JDK-1_6_0_27/include -I/export/apps/jdk/JDK-1_6_0_27/include/linux

The following Java variables have been exported:
JAVA_HOME JAVA JAVAC JAVAH JAR JAVA_LIBS JAVA_CPPFLAGS JAVA_LD_LIBRARY_PATH
Running: /bin/bash

LD_LIBRARY_PATH设置为与JAVA_LD_LIBRARY_PATH相同的值,如上面的输出所示。我能够安装rj。

export LD_LIBRARY_PATH=/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64/server:/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64:/export/apps/jdk/JDK-1_6_0_27/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

运行R然后按

安装rj
install.packages(c("rj", "rj.gd"), repos="http://download.walware.de/rj-1.1")

答案 2 :(得分:20)

我找到了解决方案:

export LD_LIBRARY_PATH=/usr/lib/jvm/java-7-oracle/lib/amd64:/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server

然后

sudo R CMD javareconf

注意:需要根据Java安装更新路径(java-7-oracle)。

答案 3 :(得分:9)

我做了以下工作,它对我有用:

export LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH
sudo R CMD javareconf

我也必须重新启动R.

答案 4 :(得分:3)

多年以后,我在找到R报告的错误后,在我未能成功安装了一个需要转移到Oracle Java的软件包之后,最终找到了这个问题。

我需要做的就是修复它:

$ sudo R CMD javareconf

答案 5 :(得分:2)

或只是在R?

中设置库

我刚在R:

中运行了这个命令
Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server')

(替换" / usr / lib / jvm / java-7-openjdk-amd64 / jre / lib / amd64 / server"使用可以找到运行的Java库路径" sudo R CMD javareconf")

可能不是最优雅的解决方案 - 但它对我有用!

答案 6 :(得分:1)

我没有安装我可以修复的jdk sudo apt-get install jdk-* 之后,我可以运行sudo R CMD javareconf之前总是提示错误消息。一切都设置正确,没有需要的手动tweeks,然后在R中顺利安装包(需要重新启动)。

答案 7 :(得分:0)

如果遇到错误的limjvm.so错误,请确保从ldpaths中的标准配置与/etc/R中的标准配置中选择了正确的/usr/lib/R/etc

答案 8 :(得分:0)

这为我修复了LD_LIBRARY_PATH问题(Linux,Debian 7.1.0,tc-shell,R版本3.0.2):

将此行添加到.cshrc:

setenv LD_LIBRARY_PATH $ JAVA_HOME / jre / lib / amd64:$ JAVA_HOME / jre / lib / amd64 / server

将此命令添加到〜/ .login是不够的;新的xterms中仍然不知道环境变量LD_LIBRARY_PATH:echo $ LD_LIBRARY_PATH:LD_LIBRARY_PATH:未定义的变量。 (为什么?)

奇怪的是,当以超级用户身份启动R时,找到libjvm.so没有问题。

答案 9 :(得分:0)

我通过使用sudo运行R,然后运行tableView.contentOffset.y来修复此问题。

答案 10 :(得分:0)

以上都没有对我有用,在Linux Ubuntu上安装rJava而没有任何问题的唯一解决方案是在安装基本R后传递RScript命令:

$ sudo Rscript -e 'install.packages("rJava", repos = "http://cran.r-project.org/")'