2015-11-11 44 views
7

我試圖使用XLConnect庫R.如果我執行爲什麼R無法加載共享對象?

library(XLConnect) 

我收到以下錯誤信息:

JAVA_HOME cannot be determined from the Registry 

要解決這個問題,我首先設置了JAVA_HOME變量:

Sys.setenv(JAVA_HOME='C:/Program Files (x86)/Java/jre1.8.0_65') 
library(XLConnect) 

它看起來像幫助我走得更遠,但後來我又遇到了另一個問題:

unable to load shared object 'C:/Program Files/R/R-3.2.2/library/rJava/libs/x64/rJava.dll' 

它想知道爲什麼R無法加載rJava.dll。至少這個文件所在的文件夾在其中,R用它進行查詢:

C:\Program Files\R\R-3.2.2\library\rJava\libs\x64 

ADDED

請注意:rJava.dll文件存在,它位於那裏,其中R是尋找它。我想這個問題是在32位和64位版本之間不兼容。我認爲,既然[R抱怨:

% 1 is not a valid Win32 application 

那麼,爲什麼[R指望它在名稱中Win32 application`? First, my OS is 64bit, second my Java is also for the 64bit and finally, the `rJava.dll` object is located in the folder with x64`(所以,我認爲這也是一個64位版本)。

+1

創建並將其放置在它正在尋找它的文件夾? – tchakravarty

+0

我錯過了什麼嗎?這些路徑對我來說看起來是一樣的。 – MrFlick

+0

你確定java是適合你的OS/R版本的,例如32和64bit? http://stackoverflow.com/questions/7019912/using-the-rjava-package-on-win7-64-bit-with-r和一些其他鏈接在評論http://stackoverflow.com/questions/29186040/convert -a-csv-to-excel-without-using-xlsx-package#comment46587465_29186040 – user20650

回答

3

我面臨同樣的問題。請找到的jvm.dll 應該在(你的JRE版本可能會有所不同)

C:\Program Files (x86)\Java\jre1.8.0_65\bin\client 

C:\Program Files (x86)\Java\jre1.8.0_65\bin\server 

這個路徑添加到您的Windows系統路徑,你是好去。但保持介意JRE和R的版本應該是一致的,如果您的Java在Program Files其64位,所以從64 bit R推出如果在Program Files (x86)其32位,所以使用32 bit R

喜歡以米Ÿ情況下,它顯示出錯誤的64位enter image description here

但在32位 enter image description here

1

完美工作你沒有使用/,而不是\

Sys.setenv(JAVA_HOME='C:\\Program Files (x86)\\Java\\jre1.8.0_65') 
library(XLConnect) 

我正在使用UNIX。所以我不能自己測試,但你的路可能也是錯的。

根據這一post您可以通過使用該搜索一下:

find.java <- function() { 
    for (root in c("HLM", "HCU")) for (key in c("Software\\JavaSoft\\Java Runtime Environment", 
     "Software\\JavaSoft\\Java Development Kit")) { 
     hive <- try(utils::readRegistry(key, root, 2), 
      silent = TRUE) 
     if (!inherits(hive, "try-error")) 
      return(hive) 
    } 
    hive 
} 

歸功於@nograpes的功能,這article幫我給你答案。

相關問題