首页
学习
活动
专区
圈层
工具
发布

安装rJava
EN

Stack Overflow用户
提问于 2015-12-10 21:48:42
回答 6查看 36.7K关注 0票数 24

我试着用前面的问题/答案来解决这个问题,但没有成功。所以,这是我的问题。

我正在使用RStudio on和Ubuntu (14.04),我试图从源代码中升级rJava,在此过程中我设法丢失了它。

我试着重新安装,

代码语言:javascript
复制
install.packages("rJava")

返回以下错误消息,

代码语言:javascript
复制
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

所以,我去了终点站打字,

代码语言:javascript
复制
sudo R CMD javareconf

这也导致了以下错误,

代码语言:javascript
复制
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 <jni.h>
                 ^
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.

我试着遵循这些链接,onetwo,但它们似乎没有解决我的问题;因此有更多的链接,但我不确定应该遵循哪个链接。我还通过卸载和重新安装了RStudio,但这并没有什么不同。

还有其他人能帮忙吗?

简而言之,我希望能够再次将RStudio与rJava一起使用,而不会破坏Java的任何其他用途(如jmol)。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-12-19 04:39:57

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

代码语言:javascript
复制
sudo apt-get install openjdk-7-jdk

然后再运行

代码语言:javascript
复制
sudo R CMD javareconf

确保您没有手动设置JAVA_HOME -它将被自动检测到。然后你应该看到这样的东西:

代码语言:javascript
复制
$ 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
票数 35
EN

Stack Overflow用户

发布于 2015-12-19 04:41:46

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

请参阅for example this earlier answer及其周围的问题/线程。

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

票数 14
EN

Stack Overflow用户

发布于 2015-12-17 13:36:19

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

关于这个错误,请确保您已经安装了JDK。我认为命令java -version无法判断是否安装了JDK。您必须检查JDK本身的包,或者根据错误消息执行以下操作:

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

代码语言:javascript
复制
/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h 
/usr/lib/jvm/java-7-oracle/include/jni.h        

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

通过执行以下命令,您可以看到default-java真正指向的位置:

代码语言:javascript
复制
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而不是JRE中的java。你有两个选择:

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

这是方便的,但可能会影响其他程序,如您刚才提到的jmol。但别担心,这是可逆性的,只需重新运行命令并选择旧的命令。执行以下命令并选择具有JDK的dir:

代码语言:javascript
复制
sudo update-alternatives --config java

在测试了jmol的工作原理之后,如果它正常工作,那么恭喜你。现在您已经准备好测试rJava了。如果没有,请尝试下面的第二种方法

方法2:只对R做

将它放在主目录下的.Rprofile

代码语言:javascript
复制
Sys.setenv(JAVA_HOME = '/usr/lib/jvm/jdk1.8.0_65')
# this set JAVA_HOME for R to correct java home dir. 

在更新或创建.Rprofile之后,请在Rstudio中重新启动R。在这种情况下,R CMD javareconf可能仍然失败,但是如果您在Rstudio的Shell菜单下运行它,那么它应该是可以的。

关于Ubuntu的股票回购的安装或Rstudio。这对rJava的运行没有什么影响。再一次,我建议为其主页安装Rstudio,因为新版本也有一些不错的功能(即更好的自动完成,我最喜欢)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34212378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档