2015-02-11 126 views
10

嘗試安裝R上的rJava包,在我的Ubuntu 14.10,使用此代碼libjvm.so:無法打開共享對象文件:沒有這樣的文件或目錄

if (!require(rJava)) install.packages('rJava') 

了與Java有關,包括JNI幾個誤區問題,重新安裝JDK後,並試圖再次運行相同的代碼,得到了錯誤

Error : .onLoad failed in loadNamespace() for 'rJava', details: 
    call: dyn.load(file, DLLpath = DLLpath, ...) 
    error: unable to load shared object '/usr/local/lib/R/site-library/rJava/libs/rJava.so': 
    libjvm.so: cannot open shared object file: No such file or directory 
Error: loading failed 
Execution halted 
ERROR: loading failed 
* removing ‘/usr/local/lib/R/site-library/rJava’ 
Warning in install.packages : 
    installation of package ‘rJava’ had non-zero exit status 

The downloaded source packages are in 
    ‘/tmp/RtmpfFjrp0/downloaded_packages’ 
Warning message: 
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : 
    there is no package called ‘rJava’ 

尋找解決方案,發現幾乎每個人都提示(針對x64)執行這些命令

export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-oracle/lib/amd64:/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server 
sudo R CMD javareconf 

但這並不奏效,還有什麼我可以做的嗎?我將提供任何所需的詳細信息

+0

你使用RStudio一個符號鏈接? – 2015-02-11 20:58:40

+0

是的,但我曾嘗試使用終端命令行和Rstudio命令行 – tan 2015-02-11 21:12:02

回答

2
  • 我每次打開RStudio時都運行以下命令解決了類似問題。轉到包含rstudio可執行文件的文件夾,打開終端並輸入:

    LD_LIBRARY_PATH =/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/server:open -a rstudio

    當然,您必須根據您的Java版本更改路徑。

  • 如果以前的解決方案不起作用,請嘗試閱讀以下文章: http://allanino.me/blog/programming/installing-some-r-packages/

  • 如果此解決方案不起作用,您最後的機會是安裝rJava從源代碼編譯它。

+0

當我嘗試安裝具有Java依賴關係的nodejs插件時遇到此問題。這個沒有JS應用程序安裝在Heroku環境中。有沒有人有任何想法?如果是這裏是一個鏈接到堆棧溢出:http://stackoverflow.com/questions/36191073/node-java-error-libjvm-so-cannot-open-shared-object-file-no-such-file-or -dire – 2016-03-24 00:59:54

14

當我試圖在RStudio中加載rJava時,我遇到了同樣的錯誤。 以下解決方案爲我

1) sudo rstudio-server stop 
2) export LD_LIBRARY_PATH=/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/jre/lib/amd64/default 
3) sudo rstudio-server start 

執行上述步驟後,我能夠的情況下,沒有上述工程的運行中RStudio

> library("DBI") 
> library("rJava") 
> library("RJDBC") 
+0

這是唯一適合我的版本。或者至少我能勝任的唯一答案! – Pete900 2016-06-24 14:22:46

5

successfuly以下,試試這個,感謝我後來(通用的答案):)

R CMD javareconf -e 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LD_LIBRARY_PATH 
+2

糟糕..也沒有工作。這樣做。 http://orinanobworld.blogspot.com/2016/12/rjava-gift-that-keeps-on-giving.html – user3673 2017-06-20 22:57:10

7

爲了解決這個問題,

  1. 運行

    須藤 - [R CMD javareconf

  2. 添加以下到/ etc /環境。這將在每次重啓機器時設置。

    LD_LIBRARY_PATH =/usr/lib目錄/ JVM /默認的Java/JRE/lib目錄/ AMD64 /服務器/

    (改變你的路徑)

  3. 運行以下命令:

    源的/ etc /環境

  4. rstudio服務器重啓
+0

這一個爲我工作,而不是上面的。也許有必要以root身份運行'R CMD javareconf'。 – 2017-09-26 16:50:47

+0

這是爲我工作的解決方案 – 2017-11-07 12:14:17

2

如果有人現在來到這裏,請嘗試以下方法:

步驟:

  1. 找到你的R位置,它將被存儲在rsession-ld-library-pathrserver.conf文件中。或者只是通過做which R。該位置通常是/usr/lib64/R/lib/usr/lib64/microsoft-r/3.3/lib64/R/lib

  2. 找到libjvm.so文件通常是在usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server路徑,這取決於JRE你使用。檢入$ JAVA_HOME環境。

  3. 創建使用ln -s sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib64/microsoft-r/3.3/lib64/R/lib/libjvm.so

  4. 重啓R服務器

相關問題