使用install.packages("rJava")
命令安装rJava时出现以下错误:
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/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include -I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include/linux' java libs : '-L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/server -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64 -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm' checking whether JNI programs can be compiled... yes checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this. ERROR: configuration failed for package ‘rJava’
我安装了Java JDK并java -version
返回以下内容:
$ java -version java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
当谷歌搜索错误时,我发现其他人遇到了同样的问题,但没有找到除了"安装整个JDK,而不仅仅是JRE"之外的解决方案.
我读到的另一件事是运行sudo R CMD javareconf
哪个运行非常愉快,没有错误.
有什么想法我的问题是什么?
[[编辑]] 我遇到这个问题已经有几个月了.我最初通过编辑我的Java路径解决了这个问题,如下面发布的答案所示.我最近在新的Ubuntu安装上遇到了同样的问题.我尝试了Dirk的建议,使用apt-get来安装rJava包.它工作得很好.我最初没有意识到的是,使用Ubuntu apt-get方法安装软件包与使用R中的install.packages()加载相同的软件包根本不同.Ubuntu软件包解决了一些我没有意识到或者没有意识到的问题. .
岂不
apt-get install r-cran-rjava
一直比较容易?你可以在useR上问我!:)
结果我的问题是我的JAVA_HOME
环境变量的问题.是的,我知道这令人震惊.我的初始设置PATH
和JAVA_HOME
看起来像这样:
export JAVA_HOME=/usr/lib/jvm/java-6-sun export PATH=$PATH:$JAVA_HOME/bin
我添加了/jre
它,现在看起来像这样:
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre export PATH=$PATH:$JAVA_HOME/bin
Java中的所有内容似乎都没有,/jre
但是rJava不会.奇.
谢谢 - 您的建议$JAVA_HOME
引导我找到类似的解决方案:
prompt$ unset JAVA_HOME
在调用R.之前
我遇到了同样的问题,它在下面运行命令后起作用.
export JAVA_LIBS="$JAVA_LIBS -ldl" R CMD javareconf
有关详细信息,请参阅 http://www-01.ibm.com/support/knowledgecenter/SSPT3X_3.0.0/com.ibm.swg.im.infosphere.biginsights.install.doc/doc/install_install_r.html
这对我来说在Ubuntu 12.04和R 3.0版本上都有用
cd /usr/lib/jvm/java-6-sun-1.6.0.26/include
这是具有jni.h的目录
接下来创建一个指向另一个必需头文件的软链接(我太懒了,不知道如何在下面的JAVA_CPPFLAGS选项中包含多个目录):
sudo ln -s linux/jni_md.h .
最后
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include
下面是我在另一篇文章中的答案之一 - 错误:刚才无法加载已安装的软件包
(这也与此问题相关)
对于Linux(Ubuntu)用户:如果安装了oracle-java(7/8).它将在这个位置,/usr/lib/jvm
并且sudo
需要访问.
/etc/ld.so.conf.d/java.conf
使用以下条目创建文件:
/usr/lib/jvm/java-8-oracle/jre/lib/amd64 /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server
(取决于你的java版本,用java-7-oracle替换java-8-oracle)
然后:
sudo ldconfig
重新启动RStudio,然后安装rJava包.
这就是我的工作方式:
在Linux(Ubuntu 16.04)中sudo apt-get install default-jre sudo apt-get install default-jdk sudo R CMD javareconf在R中:
install.packages("rJava")