我试图用之前的问题/答案解决这个问题,但没有任何成功.所以,这是我的问题.
我正在使用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).
您似乎没有安装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
有什么问题sudo apt-get install r-cran-rjava
?
例如,请参阅此前面的答案以及围绕它的问题/主题.
对于从头开始的安装,你可能仍然比开始更糟糕sudo apt-get build-dep r-cran-rjava
.它将为您提供与您的Ubuntu版本对应的JDK.
首先,我建议从其网站安装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 Shell
下Tools
Rstudio的菜单.
关于从Ubuntu的股票回购安装或Rstudio.rJava
跑步并没有什么不同.然后,我建议为其主页安装Rstudio,因为新版本也有一些不错的功能(即更好的自动完成,我最喜欢).