2013-06-29 16 views
58

時,以下消息被示出:問題試圖當我以加載包<code>xlsx</code> R型<code>require(xlsx)</code>至R中的封裝加載由於rJava

> require(xlsx) 
Loading required package: xlsx 
Loading required package: xlsxjars 
Loading required package: rJava 
Error : .onLoad failed in loadNamespace() for 'rJava', details: 
    call: fun(libname, pkgname) 
    error: JAVA_HOME cannot be determined from the Registry 
Failed with error: ‘package ‘rJava’ could not be loaded’ 

我還試圖加載rJava手動打包,但得到了這個錯誤信息:

require(rJava) 
Loading required package: rJava 
Error : .onLoad failed in loadNamespace() for 'rJava', details: 
    call: fun(libname, pkgname) 
    error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures. 

你有什麼建議如何解決這個問題?

+3

嘗試安裝'rJava' ...閱讀[這](http://stackoverflow.com/questions/7019912/using-the-rjava-package-on-win7-64-bit- with -r/7604469#7604469) – agstudy

+3

哪個平臺?如果Windows然後[this](http://www.r-statistics.com/2012/08/how-to-load-the-rjava-package-after-the-error-java_home-cannot-be-determined-from -the-registry /)可能會有所幫助。 – dardisco

+0

此外,您的問題允許您首先將.xlsx文件保存到csv,然後使用read.csv,而不是嘗試讀取.xlsx文件。 –

回答

76

原因可能與您正在使用64位 OS和R版本的事實有關,但未安裝具有相同體系結構的Java。 你所要做的就是從此頁下載Java 64位:https://www.java.com/en/download/manual.jsp

之後,只需嘗試重新加載xlsx包。你不需要重新啓動R.

+0

(+1)我不確定R的消息*是否完全*指出這是問題,但對我來說就是這種情況!可以肯定的是,你可以檢查。如果您正在運行64位操作系統和64位R,請運行命令行並嘗試'java -d64 version'。如果您使用64位Java,那可能是系統路徑問題。 – AdamO

+1

你是不是指'java -d64 -version'? – Harrison

2

我有類似的問題。這是由於依賴包'rJava'造成的。這個問題可以通過重新指導R使用不同的JAVA_HOME來克服。

if(Sys.getenv("JAVA_HOME")!=""){ 
    Sys.setenv(JAVA_HOME="") 
} 
library(rJava) 

這對我有效。

6

它是因爲您的計算機中缺少一個Java版本(32位/ 64位)。嘗試安裝兩個Jdks並運行代碼。
安裝的JDK開放的R和輸入代碼

system("java -version") 

後,這會給你安裝了JDK版本。然後嘗試加載rJava軟件包。這對我有效。

0

回答於link解決了我的問題。

在解決之前,我嘗試在Windows環境中添加JAVA_HOME。它解決了這個錯誤,但又產生了另一個問上述鏈接中的解決方案可解決此問題,而不會產生其他問題。

5

我有一個類似的問題,我爲我工作的是設置JAVA_HOME。我累了它首次在R:

Sys.setenv(JAVA_HOME = "C:/Program Files/Java/jdk1.8.0_101/") 

而且,當實際工作我將它設置在系統屬性 - >高級 - >通過添加新的系統變量的環境變量。然後我重新啓動了R/RStudio,一切正常。

0

您可以使用的替代包是readxl。這個包不需要外部依賴。

1

如果您在RStudio中出現此錯誤,請使用上述Lauren的環境代碼並在Tools,Global Options中將您的R版本更改爲32位版本。如果你有更新的版本,應該有32位和64位R選項。這將需要重新啓動R,並限制您的內存選項。雖然安裝64位版本的jre並不是必需的。