簡體   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