R:rJava软件包安装失败


116

使用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软件包解决了一些我没有意识到或欣赏的问题。


答案可以在这里也可以找到- stackoverflow.com/questions/12872699/...
Tejus普拉萨德

1
只是在这里对我的未来自我发表评论(当我毫无疑问地回到这个问题时),我需要运行sudo R CMD javareconf来使apt-get安装被我的rstudio-server识别。
Jim Crozier

2
九年后,这是一个永无止境的问题。每当我进行R的新安装时,都会遇到此问题。某些更改.. OS,Rstudio版本,R版本,java版本,jdk,jre,jvm...。它始终是解决该问题的新解决方案。没有所有这些废话,我无法读取excel文件是荒谬的。
rmf

@rmf现在有许多不需要Java的excel阅读程序包。我喜欢简单的阅读,但是喜欢readxl写回Excel openxlsx。两者都不需要rJava。
京东

Answers:


114

不会

apt-get install r-cran-rjava

容易些吗?您可能在useR上问过我:)


3
Ubuntu和Debian的要点是,您一开始就不必谷歌---它应该使用适当的软件包来“正常工作”。使您的生活更轻松,并尽可能使用软件包。我想您也使用过Ubuntu的Java软件包吗?
德克·埃德尔布特尔

16
德克,你问这些问题就像我不知道我到底在干什么。回想一下,我在使用apt-get安装Java时遇到了麻烦,因此我是从源代码构建的,这很可能是问题的源头(所有双关语都是这样)。当然,这可能只是不好的业力。
JD 2010年

2
我使用R 2.15.3 ubuntu 12.04.2 64位。当我update.packages()收到通知时,我会发现一个rJava update。从R内部安装失败。当我apt-get install r-cran-rjava没有可用的更新时。为什么会这样呢?
ECII

1
@DirkEddelbuettel,在我的Red Hat'sudo yum install r-cran-rjava'中不起作用。说加载的插件:rhnplugin该系统正在接收RHN Classic或RHN Satellite的更新。设置安装过程没有可用的软件包r-cran-rjava。
BigDataScientist 2014年

1
@DirkEddelbuettel,虽然“应该工作”的方法对我来说听起来很棒,但事实是,人们仅在r-cran-x中列出了这么多软件包,这就是为什么人们使用“常规” R方法(install.packages)。而且,我只是建议您通过cran进行操作,因为R 3.x现在已经成为主流,这确实无济于事,而r-cran-中的软件包显然早于R 3.x
Richard

77

原来我的问题是我的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

没有/jrerJava ,Java中的一切似乎都可以正常工作,但是rJava则无法。奇。


5
通过创建一个问题->回答无限循环-来保持“堆栈溢出”的真正含义,我喜欢它。
DrewConway

10
谢谢。尽我所能,以确保将来的Google用户可以找到有关R问题的答案!
JD

11
修改JAVA_HOME和Java可执行文件的路径后,我发现需要运行R CMD javareconf。否则,rJava安装过程中仍然可以看到头的老位置,和图书馆等
卡洛斯Macasaet

1
什么都没有为我工作。我试图在服务某些R Shiny应用程序的Red Hat Linux服务器中安装“ rJava”。我收到以下错误:软件包“ rJava”的配置失败*删除了“ / usr / lib64 / R / library / rJava”。在消除错误的过程中,我已经执行了以下步骤。1.在Linux中更新了Java sudo yum install java-1.7.0-openjdk 2.设置HOME和PATH导出JAVA_HOME = / usr / lib / jvm / java-1.7.0-ibm-1.7.0.6.1.x86_64 / jre export PATH = $ PATH:$ JAVA_HOME / bin 3.重新配置的Java sudo / usr / bin / R CMD javareconf
BigDataScientist 2014年

是的,它可以工作,我改用8-oracle版本。
gunzapper 2015年

21

谢谢-您的建议$JAVA_HOME使我找到了类似的解决方案:

prompt$ unset JAVA_HOME

在调用R之前


1
未设置JAVA_HOME(无美元符号)
Vladtn 2012年

1
是的,这解决了我的问题。你能解释为什么吗?谢谢
MichaelZ

取消设置JAVA_HOME并设置CLASSPATH = $ CLASSPATH:/ usr / lib64 / R / share / java
2015年


14

这就是我的工作方式:

在Linux中(Ubuntu 16.04)

sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo R CMD javareconf

在R中:

install.packages("rJava")

1
谢谢...我需要在R中安装一个叫做rcdk的东西,它掉下来了'cos java无法正常工作。您的工作解决了该问题(Ubuntu 18.04)
user1945827

真的很乐意提供帮助!
Jim Chen

11

这对我适用于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
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include为我解决了问题。
Moustafa Alzantot

…我要补充一点echo $JAVA_HOME,以防java-6-sun您的目录不正确。
同构

7

以下是我对另一则帖子的回答之一- 错误:无法立即加载已安装的软件包
(这也与此问题相关)

对于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-8-oracle替换为java-7-oracle)

然后:

sudo ldconfig

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


1
我已经尝试了多种解决方案,但都取得了不同程度的成功,但这是我遇到的第一个似乎具有弹性的解决方案(即不需要每次启动R时都重复相同的5个步骤)。
SamWN

4

在AMD64上的Gentoo下运行R。我升级到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位),那些讨厌的消息远。

扬·范德米尔


2

我尝试安装openjdk-7- *,但仍然无法安装rJava。重新启动计算机后发现原来没有问题。

所以

sudo apt-get install openjdk-7-*


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

2

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测试


2

对我有用的是从文件更改JAVA_HOME /usr/lib/R/etc/javaconf

我首先检查了我的Java版本是什么: sudo update-alternatives --config java。就我而言,java-8-oracle

我打开文件/usr/lib/R/etc/javaconf并替换default-javajava-8-oracle

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

取而代之 :

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

然后 sudo R CMD javareconf

我重新启动了RStudio,然后可以安装rJava。


1

我在这里做的是:

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

    deb http://ftp.de.debian.org/debian sid main

注意:rjava应该是最新版本

2运行:sudo apt-get更新sudo apt-get安装r-cran-rjava

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


1

我通过下载以下命令使其工作:https : //cran.r-project.org/src/contrib/rJava_0.9-8.tar.gz并运行命令R CMD install rJava_0.9-8.tar.gz


1

使用Windows 10时,我遇到了相同的问题。我已按照以下步骤解决了该问题

  1. https://java.com/zh-cn/download/windows-64bit.jsp下载Java(用于64位Windows)\安装Java
  2. 从64位Windows的https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载Java开发工具包\安装
  3. 然后右键单击桌面\ Properties \ Advanced系统设置\ Advanced \ Environment变量\在系统变量下的“ This PC”图标,选择Path \ Click Edit \ Click New \ Copy并粘贴路径“ C:\ Program Files \ Java \ jdk1 .8.0_201 \ bin”和“ C:\ Program Files \ Java \ jre1.8.0_201 \ bin”(不带引号)\ OK \ OK \ OK

注意:jdk1.8.0_201和jre1.8.0_201将根据Java开发套件和Java的版本进行更改

  1. 在“环境变量”窗口中,转到“用户”的“用户变量” \单击“新建\”,将变量名称命名为“ JAVA_HOME”,将变量值命名为“ C:\ Program Files \ Java \ jdk1.8.0_201 \ bin” \按OK

要检查安装,请打开CMD \ Type javac \ Press Enter,然后键入java \ press enter,它将显示 在此处输入图片说明

在RStudio中运行

Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")

注意:jdk1.8.0_201将根据Java开发套件的版本进行更改

现在,您可以毫无问题地安装和加载rJava软件包。


0

问题是rJava无法安装在RStudioVersion 1.0.136)中。以下内容对我有用(macOS Sierra version 10.12.6)(在此处找到):

步骤1:javaforosx.dmg从以下位置下载并安装此处

步骤2:接下来,从RStudio内部运行命令:

install.packages("rJava", type = 'source')

-2

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


1
这将破坏default-jre软件包的安装。
古斯塔沃·加西亚
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.