2010-07-22 160 views
83

当使用install.packages("rJava")命令我碰到下面的错误安装rJava:R: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软件包解决了一些我没有意识到或欣赏的问题。

+0

答案也可以在这里找到-http://stackoverflow.com/questions/12872699/error-unable-to-load-installed-packages-just-now/25932828#25932828 – 2015-12-02 13:46:06

+1

只是在这里对我的未来发表评论自我(因为当我毫无疑问地发现自己回到了这个问题),我需要运行sudo R CMD javareconf来获得apt-get install来识别我的rstudio-server。 – 2017-09-13 14:03:32

回答

65

原来我的问题是我的JAVA_HOME环境变量的问题。是的,我知道,令人震惊。我对PATHJAVA_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不会。奇。

+4

通过创建问题来保持“堆栈溢出”的真正含义 - >回答无限循环---我喜欢它。 – DrewConway 2010-07-22 18:18:56

+9

谢谢。尽我所能确保未来的Google用户可以找到R问题的答案! – 2010-07-22 19:02:49

+0

3.5岁的解决方案挽救了我的皮肤,谢谢。 – 2013-10-31 15:27:48

91

岂不

apt-get install r-cran-rjava 

已经更容易?你可以问我useR! :)

+3

Ubuntu和Debian的意义在于,你不应该首先使用谷歌 - 它应该使用合适的软件包“正常工作”。让生活更轻松,并尽可能使用软件包。我猜你也使用过Ubuntu的Java包? – 2010-07-26 14:59:10

+11

德克,你问这些问题就好像我知道我到底做了什么。如果我记得,我使用apt-get安装Java时遇到了问题,所以我从源代码构建,这可能是我的问题的源代码(所有的双关语)。当然,这可能只是恶业。 – 2010-08-06 17:11:40

+0

@DirkEddelbuettel:你能告诉我如何在OpenSUSE上解决这个相同的问题吗?我对OpenSUSE和R都不熟悉。 – Bhushan 2012-01-17 16:40:26

4

在AMD64上运行R下Gentoo。我升级至R 2.12.0

[R版本2.12.0(2010-10-15) 版权所有(C)2010将R基金会统计计算 ISBN 3-900051-07-0 平台:x86_64的-PC -linux-gnu(64位) 那些讨厌的消息就消失了。

一月的VanderMeer

16

感谢 - 您的建议对$JAVA_HOME导致我到一个类似的解决方案:

prompt$ unset JAVA_HOME 

调用R.

+1

取消设置JAVA_HOME(无美元符号) – Vladtn 2012-08-06 10:00:18

+1

这在Arch Linux的 – sieste 2014-04-17 22:11:46

+1

是的,这个固定我的问题的工作。你能解释为什么吗?感谢 – MichaelZ 2015-01-12 00:46:38

10

这为我工作在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 
+1

'须藤 - [R CMD javareconf JAVA_CPPFLAGS = -I/usr/lib中/ JVM/JAVA -6-太阳1.6.0.26/include'为我解决了这个问题。 – 2013-12-18 17:30:01

+0

...并且我会在'java-6-sun'不是您的确切目录的情况下添加'echo $ JAVA_HOME'。 – isomorphismes 2014-11-03 21:29:08

+0

这对我有用Ubuntu 14.04 – remo 2017-07-08 21:43:06

1

我做的是在这里:

  1. /etc/apt/sources.list中添加:

    DEB http://ftp.de.debian.org/debian SID主要

注:rjava应该是最新版本

2执行命令 sudo apt-get update sudo apt-get install r-cran-rjava

一旦更新旧版本的rjava,则可以安装rhdfs_1.0.8。

2

我试图安装openjdk-7- *,但仍然遇到安装rJava的问题。在我重新启动计算机后发生故障,完全没有问题。

所以

sudo apt-get install openjdk-7-* 


RESTART after installing java, then try to install package "rJava" in R 
4

下面是我在另一篇文章的一个答案 - error: unable to load installed packages just now
(这也是有关这个问题)

对于Linux(Ubuntu的)用户:如果您已安装oracle-java (7/8)。它将在这个位置/usr/lib/jvmsudo访问是必需的。

创建文件/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-8-甲骨文的Java 7甲骨文)

然后:

sudo ldconfig 

重新启动RStudio,然后安装rJava软件包。

+1

为我工作感谢! – 2016-07-17 10:27:57

-2

我在Ubuntu 16.04上遇到了类似的问题,并且能够通过在/usr/lib/jvm中创建一个名为“default-java”的文件夹并将其复制到/usr/lib/jvm/java-8-oracle的所有内容来解决此问题。我选择了这个解决方案,因为纠正了JAVA_HOME环境变量是没用的。

+1

这将打破'default-jre'软件包的安装。 – 2017-07-03 18:07:47

1

的rJava包查找的/usr/lib/jvm/default-java/文件夹。但它作为默认不可用。该文件夹具有为系统配置的默认java的符号链接。

要激活默认的Java安装以下软件包:

sudo apt-get install default-jre default-jre-headless

测试在Ubuntu 17.04与CRAN [R 3.4.1

0

什么工作对我来说是从文件中更改JAVA_HOME /usr/lib/R/etc/javaconf

我首先检查了我的Java版本是什么:sudo update-alternatives --config java。 对我来说,这是java-8-oracle

我打开文件/usr/lib/R/etc/javaconfjava-8-oracle取代default-java

${JAVA_HOME=/usr/lib/jvm/java-8-oracle} 

然后sudo R CMD javareconf

我重新启动RStudio:

${JAVA_HOME=/usr/lib/jvm/default-java} 

替换,然后可以安装rJava。