2010-07-22 166 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。