繁体   English   中英

R:rJava 包安装失败

[英]R: rJava package install failing

使用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环境变量的问题。 是的,我知道令人震惊。 我对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

如果没有/jre ,Java 中的一切似乎都可以正常工作,但 rJava 则不行。 奇怪的。

这就是我让它工作的方式:

在 Linux 中(Ubuntu 16.04 和 20.04 工作确认)

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

在 R:

install.packages("rJava")

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

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

然后:

sudo ldconfig

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

在 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 位)和那些讨厌的消息离开。

扬·范德米尔

我尝试安装 openjdk-7-* 但仍然在安装 rJava 时遇到问题。 结果我重新启动计算机后,就完全没有问题了。

所以

sudo apt-get install openjdk-7-*


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

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

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

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

在带有 CRAN R 3.4.1 的 ubuntu 17.04 上测试

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

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

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

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

取而代之 :

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

然后sudo R CMD javareconf

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

我在这里做的是:

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

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

注意:rjava 应该是最新版本

2 运行: sudo apt-get update sudo apt-get install r-cran-rjava

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

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

我在使用 Windows 10 时遇到了同样的问题。我已经使用以下过程解决了这个问题

  1. https://java.com/en/download/windows-64bit.jsp下载 Java for 64-bit windows\\Install it
  2. https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载 Java 开发工具包,用于 64 位 Windows\\安装它
  3. 然后右键单击桌面\\属性\\高级系统设置\\高级\\环境变量\\在系统变量下选择路径\\单击编辑\\单击新建\\复制并粘贴路径“C:\\Program Files\\Java\\jdk1”中的“This PC”图标.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. 在 Environment Variables 窗口中,转到 User variables for User\\单击 New\\Put Variable name as “JAVA_HOME”和变量值作为 “C:\\Program Files\\Java\\jdk1.8.0_201\\bin”\\Press 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 包。

问题是 rJava 不会安装在RStudioVersion 1.0.136 )中。 以下对我macOS Sierra version 10.12.6macOS Sierra version 10.12.6 )(在这里找到):

步骤 1:从这里下载并安装javaforosx.dmg

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

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

在 Arch Linux 上,我需要安装openjdk-src才能使 JNI 路径正常工作。

换句话说,这些是我在sudo R CMD javareconf成功运行之前需要安装的包:

local/jdk-openjdk 14.0.2.u12-1
    OpenJDK Java 14 development kit
local/jre-openjdk 14.0.2.u12-1
    OpenJDK Java 14 full runtime environment
local/jre-openjdk-headless 14.0.2.u12-1
    OpenJDK Java 14 headless runtime environment
local/openjdk-src 14.0.2.u12-1
    OpenJDK Java 14 sources

假设你有 sudo 权限,而不是在包管理器使这更容易的 Ubuntu 中——我尝试了先前答案的变体,并在非 Ubuntu 的 Databricks 博客上找到了这个 gem ( https://kb.databricks.com/r/install-rjava-rjdbc -libraries.html )

  1. 安装的JDK
sudo apt-get install openjdk-8-jdk
  1. 验证 libjvm.so 的路径; for me-->
cd /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64 
grep -r libjvm

输出:

Binary file server/libjvm.so matches <<<<<<<<
  1. 做java配置
    sudo R CMD javareconf
  1. 删除先前版本的软件包并从 RStudio 的 CRAN 镜像中安装“rJava”

  2. 重启 RStudio

  3. 在 RStudio 中验证指向 libjvm.so 的链接

    dyn.load('/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so')
    library('rJava')

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM