rJava安装失败(MacOS,Red Hat)

5
我遇到了许多其他人似乎也曾经遇到的rJava问题。当R CMD INSTALL测试JNI程序是否可以编译时,就会出现错误。
输出建议运行R CMD javareconf -edsudo R CMD javareconf。后者的输出是:
computer: home$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version     : 1.6.0_31
Java home path   : /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Java library path: 
JNI linker flags : -framework JavaVM
JNI cpp flags    : -I$(JAVA_HOME)/include

Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.

在之后尝试安装rJava时,

computer: home$ R CMD INSTALL ~/Downloads/rJava_0.9-4.tar.gz 
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *source* package ‘rJava’ ...
checking for gcc... gcc -arch x86_64 -std=gnu99
checking for C compiler default output file name... a.out
/* Passes all checks */
configure: checking whether gcc -arch x86_64 -std=gnu99 supports static inline...yes
checking whether setjmp.h is POSIX.1 compatible... yes
checking whether sigsetjmp is declared... yes
checking whether siglongjmp is declared... yes
checking Java support in R... present:
interpreter : '/usr/bin/java'
archiver    : '/usr/bin/jar'
compiler    : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags   : '-I/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include'
java libs   : '-framework JavaVM'
checking whether JNI programs can be compiled... configure: error: Cannot compile a simple JNI program. See config.log for details.

Make sure you have Java Development Kit installed and correctly registered in R.
If in doubt, re-run "R CMD javareconf" as root.

ERROR: configuration failed for package ‘rJava’
* removing ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library/rJava’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library/rJava’

一种替代尝试,其中/usr/bin/javac被替换为/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home,但仍然失败。

我正在运行Mac OS 10.7.3和

computer: home$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04-415-11M3646)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01-415, mixed mode)

以下是我的.bash_profile文件中的内容。
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

此外,我在Red-Hat上也遇到了相同的问题。我希望提供的任何修复措施也能在那里奏效,但如果不奏效并且为什么不奏效已知,请解释一下。
我已经使用这个网站令人难以置信的知识库几年了,但这是我第一篇帖子。提前感谢您的帮助。
一些(不是全部)我已经浏览过的资源是:
- https://stat.ethz.ch/pipermail/r-devel/2008-November/051224.html - https://stat.ethz.ch/pipermail/r-help/2008-October/177688.html - R: rJava package install failing 请注意,最后一个链接中的apt-get解决方案对我没有用处(我认为),除非有一个相应的port和/或yum解决方案。

搞定了。具体来说,我访问了您提供的链接,安装了JDK,设置了“JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home”,输入了“R CMD javareconf -ed”,然后从命令行安装了rJava。非常感谢。 - artdv
在 Red Hat 上也成功了。在 .bash_profile 中添加 export JAVA_HOME=/etc/alternatives/java_sdk_openjdk,另外还需要执行 sudo yum install R-devel.x86_64,然后执行 sudo R CMD javareconfR CMD INSTALL - artdv
太好了!另一个提示:你在例如.bash_profile中设置的环境变量对于通过Finder或open启动的应用程序不可见。有两种解决方案:environment.plistlaunchctl setenv - fotNelton
1
这比我想象的要稍微复杂一些。首先,请确保您是root用户“[root@yourComputer]”。为了方便起见,我们只需为当前会话设置环境变量。export JAVA_HOME= /etc/alternatives/java_sdk_openjdk。由于某种原因,javac没有正确更新,因此请手动设置它:export JAVAC=/etc/alternatives/java_sdk_openjdk/bin/javac。您安装的路径可能会有所不同,但请确保它指向JDK而不是JRE。然后输入“R CMD javareconf -ed”,不需要使用“sudo”,但作为sudo运行(不要问我为什么这样可以,我自己也很困惑)。 - artdv
我认为我刚刚通过设置JAVAC变量使其工作了。我的路径不同,因此看起来像这样:export JAVAC=/usr/bin/javac。我在os x上。 - fraxture
显示剩余2条评论
2个回答

7

我正在使用Redhat Linux 7.1

我遇到了与上述相同的问题,我执行了以下步骤:

1)编辑/usr/lib64/R/etc/Renviron文件,在文件末尾添加“CPPFLAGS=${CPPFLAGS-'-ldl'}”

2)然后找到Java Home并设置如下(将Java Home设置为/jre)

$export JAVA_HOME=/usr/lib/jvm/java-1.7.1-ibm-1.7.1.3.10-1jpp.1.el7_1.x86_64/jre
$export PATH=$PATH:$JAVA_HOME/bin
$R CMD javareconf

3) 从命令行调用R

$R
> install.packages("rJava")
> install.packages("RJDBC",dep=TRUE)
> q()
Save workspace image? [y/n/c]: y

完美地为我工作。谢谢。 - Chaitanya Bapat
在我的 Mac OS 上运行良好。 - Tim Harper
这很有帮助,但最初对我没有起作用。原因是我在机器上安装了多个版本的R,当我执行sudo R CMD javareconf时,它在不同版本的R上进行了配置。一旦我指向正确的版本,它就可以工作了。 - Tyler R.

1
我最近在RHEL 6.5上遇到了类似的问题。我查看了这个线程和许多其他线程。问题是在测试JNI程序的编译时找不到动态加载模块。我的解决方法是将"CPPFLAGS=${CPPFLAGS-'-ldl'}"插入文件中,保留HTML标签。
/usr/lib64/R/etc/Renviron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接