41

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

顺便说一下,我的配置是:

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

11 回答 11

80

对于 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 版本,将 java-8-oracle 替换为 java-7-oracle)

然后:

sudo ldconfig

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

或者

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

于 2014-09-19T11:25:52.390 回答
31

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

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")
于 2012-11-19T00:10:55.527 回答
21

我找到了解决方案:

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-7-oracle) 需要根据您的 Java 安装进行更新。

于 2012-10-15T02:18:10.723 回答
10

我做了以下事情,它对我有用:

export LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH
sudo R CMD javareconf

我也不得不重新启动R。

于 2015-09-26T07:21:08.103 回答
3

多年后,在我没有成功安装需要转移到 Oracle 的 Java 的软件包后,我在搜索 R 报告的错误后最终解决了这个问题。

我所要做的就是修复它:

$ sudo R CMD javareconf

于 2017-06-11T21:11:34.820 回答
2

或者只是在 R 中设置库?

我刚刚在 R 中运行了这个命令:

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

(用运行“sudo R CMD javareconf”的Java库路径替换“/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server”)

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

于 2015-03-24T12:12:45.023 回答
1

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

于 2017-02-07T09:19:13.517 回答
0

当面临丢失limjvm.so的错误时,请确保ldpaths从标准配置中选择正确的,/etc/R而不是从/usr/lib/R/etc.

于 2013-11-21T08:50:14.587 回答
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 是不够的;环境变量 LD_LIBRARY_PATH 在新的 xterms 中仍然未知: echo $LD_LIBRARY_PATH : LD_LIBRARY_PATH: Undefined variable。(为什么??)

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

于 2014-02-24T10:14:51.067 回答
0

我通过使用 sudo 运行 R,然后运行install.packages('rJava`)​​.

于 2017-04-07T15:16:55.520 回答
0

None of the above worked for me, the only solution that installed rJava on Linux Ubuntu without any problems was to pass RScript command after installation of the base R:

$ sudo Rscript -e 'install.packages("rJava", repos = "http://cran.r-project.org/")'
于 2017-04-18T19:32:44.507 回答