为什么rJava不能在使用OpenJDK 7的Ubuntu14.04上工作?
嗨,我对cran的rJava软件包有问题 我已经安装了为什么rJava不能在使用OpenJDK 7的Ubuntu14.04上工作?,java,r,openjdk,rjava,ubuntu-14.04,Java,R,Openjdk,Rjava,Ubuntu 14.04,嗨,我对cran的rJava软件包有问题 我已经安装了 sudo apt-get install openjdk-7-jdk sudo apt-get install r-cran-rjava 然后跑 sudo R CMD javareconf # Java interpreter : /usr/bin/java # Java version : 1.7.0_55 # Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre #
sudo apt-get install openjdk-7-jdk
sudo apt-get install r-cran-rjava
然后跑
sudo R CMD javareconf
# Java interpreter : /usr/bin/java
# Java version : 1.7.0_55
# Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre
# Java compiler : /usr/bin/javac
# Java headers gen.: /usr/bin/javah
# Java archive tool: /usr/bin/jar
然后,我尝试运行R并加载rJava,并得到以下错误:
R
> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: package or namespace load failed for ‘rJava’
我使用的是Ubuntu 14.04 64位,我使用的是R版本3.1.0(2014-04-10)-“春舞”
更新:实际上这不是OpenJDK特有的,我只是尝试了oracle java 8,得到了相同的结果。我还发现了这个我不愿意使用的变通方法,因为它确实是一个变通方法,并没有真正解释为什么它是必要的。在我看来,包装系统应该处理好这一点。看起来像是libjvm。问题就在这里
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/jamvm/libjvm.so
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so
/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so
由于某些原因,rJava无法找到它们,尽管使用sudo R CMD javareconf进行了更新
更新2:绘图变厚:如果我像sudo那样运行R,它就会工作
感谢指针。对于类似的配置(R3.1.0、Ubuntu 12.10、32位),我也遇到了同样的问题。我发现答案在于正确设置LD_LIBRARY_路径,如下所述: 除了所讨论的子目录是“客户机”而不是“服务器”。因此,现在我将我的环境设置为:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/client
我能够用这个答案永久地解决这个问题: 如果您安装了OracleJava7或8,这是非常有用的。在我的例子中,导出变量并不是一个永久的解决方案。您应该通过执行以下操作来检查R正在使用什么作为环境:
Sys.getenv("JAVA_HOME")
然后,您可以通过在/etc/ld.so.conf.d/上创建一个
java.conf
文件来使用该环境。您可以通过像超级用户一样打开rstudio来解决这个问题
sudo rstudio
然后在里边跑
install.packages('rJava')
如果您使用的是oracle java,请使用以下命令:
sudo R CMD javareconf
不会帮助使用:
sudo R CMD javareconf **JAVA_HOME**=(path where java home is located)
我尝试了很多事情,但都没有成功。然后我试着用
sudo rstudio
然后
install.packages('rJava')
它起作用了。Coool在Ubuntu上安装rJava软件包并不像大多数其他R软件包那样简单。一些关于如何做的快速说明(来源:)
这确实解决了我一直面临的问题。剩下的唯一问题是为什么LD_LIBRARY_PATH没有自动设置?但不管怎样,就像我说的,这解决了我的问题。谢谢。在ubuntu服务器14.04上为我工作
export LD_LIBRARY_PATH=/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server
更简单的解决方案,它也为我工作。只有“type…”不是终端命令,因此应采用不同的格式。谢谢。如果你使用RStudio服务器,命令sudo RStudio doesn不适用,也可以在这里找到-这对我来说很有效,但在安装rJava之前,我必须在终端中执行“sudo R CMD javareconf”。
Install the Java Runtime Environment (JRE).
sudo apt-get install -y default-jre
Install the Java Development Kit (JDK).
sudo apt-get install -y default-jdk
Update where R expects to find various Java files.
sudo R CMD javareconf
Install the package.
> install.packages("rJava")
If you have a RStudio session open, then exit and restart it. This is important (a running RStudio session will not pick up these changes!).