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

当我试图在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 

我发现在安装rJava时使用: install.packages("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. 

顺便说一句,我的configuration是:

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

对于Linux(Ubuntu)用户:如果您安装了oracle-java(7/8) 。 它将位于/usr/lib/jvm这个位置,并且需要sudo访问。

使用以下条目创build文件/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-oraclereplacejava-8-oracle,取决于你的java版本)

然后:

 sudo ldconfig 

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

要么

还有一种替代方法是使用从命令R CMD javareconf -e获得的Java库path的值导出LD_LIBRARY_PATH ,然后运行install.packages

我得到了类似的问题,并能够通过运行来解决它

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

我find了解决办法:

 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 

我做了以下,它为我工作:

 export LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH sudo R CMD javareconf 

那么我也必须重新启动R。

多年以后,我在searchR报告的错误之后,在没有成功安装一个需要转移到Oracle的Java的软件包之后,我终于遇到了这个问题。

我只需要做的就是解决这个问题:

$ sudo R CMD javareconf

或者只是在R中设置库?

我只是在R中运行这个命令:

 Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server') 

(用你的Java库pathreplace“/ usr / lib / jvm / java-7 -openjdk-amd64 / jre / lib / amd64 / server”,运行“sudo R CMD javareconf”)

可能不是最优雅的解决scheme – 但它对我来说是有效的!

limjvm.so缺lesslimjvm.so错误时,请确保从/etc/R的标准configuration中获取正确的ldpaths而不是/usr/lib/R/etc的标准configuration。

这为我解决了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中,环境variablesLD_LIBRARY_PATH仍然是未知的:echo $ LD_LIBRARY_PATH:LD_LIBRARY_PATH:未定义的variables。 (为什么??)

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

我没有安装jdk,我可以用sudo apt-get install jdk-*之后,我可以运行sudo R CMD javareconf ,它总是在之前引发错误信息。 一切都设置正确,没有手动的镊子,并在软件包安装后在R运行平稳(需要重新启动)。

我通过用sudo运行R来解决这个问题,然后运行install.packages('rJava`)

以上都没有为我工作,在Linux Ubuntu上安装rJava没有任何问题的唯一解决scheme是安装基础R后通过RScript命令:

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