当前位置:  开发笔记 > 运维 > 正文

安装rJava

如何解决《安装rJava》经验,为你挑选了3个好方法。

我试图用之前的问题/答案解决这个问题,但没有任何成功.所以,这是我的问题.

我正在使用RStudio和Ubuntu盒子(14.04),我试图从源代码升级rJava,在这个过程中我设法失去了它.

我尝试再次使用,安装它,

install.packages("rJava")

返回以下错误消息,

configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.

If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.

ERROR: configuration failed for package ‘rJava’
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’
Warning in install.packages :
  installation of package ‘rJava’ had non-zero exit status

所以,我去了终端并打字,

sudo R CMD javareconf

这也给出了以下错误,

trying to compile and link a JNI program 
detected JNI cpp flags    : 
detected JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG      -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
 #include 
                 ^
compilation terminated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program


JAVA_HOME        : /usr/lib/jvm/default-java
Java library path: 
JNI cpp flags    : 
JNI linker flags : 
Updating Java configuration in /usr/lib/R
Done.

我试着按照这些链接,一个和两个,但他们似乎没有解决我的问题; SO上有更多的链接,但我不确定要遵循哪一个.我也通过Ubuntu软件中心卸载并重新安装了RStudio,但这没有任何区别.

其他人可以帮忙吗?

简而言之,我希望能够再次使用RSJudio和rJava,而不会破坏Java的任何其他用途(例如jmol).



1> Simon Urbane..:

您似乎没有安装JDK.你至少需要

sudo apt-get install openjdk-7-jdk

然后重新运行

sudo R CMD javareconf

确保不要JAVA_HOME手动设置- 它会被自动检测到.你应该看到这样的东西:

$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version     : 1.7.0_91
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

trying to compile and link a JNI program 
detected JNI cpp flags    : -I$(JAVA_HOME)/../include
detected JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/java-7-openjdk-amd64/jre/../include     -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR


JAVA_HOME        : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java library path: $(JAVA_HOME)/lib/amd64/server
JNI cpp flags    : -I$(JAVA_HOME)/../include
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm



2> Dirk Eddelbu..:

有什么问题sudo apt-get install r-cran-rjava

例如,请参阅此前面的答案以及围绕它的问题/主题.

对于从头开始的安装,你可能仍然比开始更糟糕sudo apt-get build-dep r-cran-rjava.它将为您提供与您的Ubuntu版本对应的JDK.



3> biocyberman..:

首先,我建议从其网站安装Rstudio:https://www.rstudio.com/products/rstudio/download/(即Rstudio 64bit:https://download1.rstudio.org/rstudio-0.99.489-amd64.deb ).这并没有直接解决问题,但它有助于避免Rstudio的其他错误.

关于错误,尝试确保安装JDK.我不认为该命令java -version可以判断JDK是否已安装.您必须检查JDK本身的包,或者根据错误消息,执行以下操作:

locate jni.h 输出应与您的JAVAHOME匹配或兼容,例如:

/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h 
/usr/lib/jvm/java-7-oracle/include/jni.h        

更新1: R CMD javareconf正在查找 安装了JDK 的jni.h文件$(JAVA_HOME)/include,但是很可能是你有一个JRE目录的默认java,这就是错误发生的原因.

您可以default-java通过执行以下命令查看实际指向的位置:

jRealDir=$(readlink -f /usr/lib/jvm/default-java)
echo $jRealDir
# sample correct output: /usr/lib/jvm/jdk1.8.0_65 
# or /usr/lib/jvm/java-8-oracle if you default to Oracle's
# now check jni.h
ls -l $jRealDir/include/jni.h
# sample expected output:
# /usr/lib/jvm/jdk1.8.0_65/include/jni.h

如果ls命令失败,则必须进行设置,以便javareconf(以及之后rJava)可以使用JDK中的Java而不是JRE.您有两种选择:

方法1:在系统范围内进行

这很方便,但可能影响您提到的其他程序jmol.但不要担心,这是可以恢复的,只需重新运行命令并选择旧命令即可.执行以下命令并选择具有JDK的目录:

sudo update-alternatives --config java

在那个测试后如何jmol工作,如果它工作正常然后祝贺.您现在可以测试rJava了.如果没有,请尝试下面的第二种方法

方法2:仅为R做它

把它放在.Rprofile你的主目录下

Sys.setenv(JAVA_HOME = '/usr/lib/jvm/jdk1.8.0_65')
# this set JAVA_HOME for R to correct java home dir. 

.Rprofile在Rstudio中更新或创建DO重启R后.该R CMD javareconf可能仍然无法在这种情况下,但如果你运行它应该OK ShellToolsRstudio的菜单.

关于从Ubuntu的股票回购安装或Rstudio.rJava跑步并没有什么不同.然后,我建议为其主页安装Rstudio,因为新版本也有一些不错的功能(即更好的自动完成,我最喜欢).

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有