web-dev-qa-db-ja.com

libjvm.so:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません

このコードを使用して、14.10 UbuntuでRにrJavaパッケージをインストールしようとしています

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

jdkを再インストールした後、jniの問題を含むJavaに関連するいくつかのエラーが発生し、同じコードを再度実行しようとすると、そのエラーが発生しました

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 

しかし、それはうまくいきませんでした、私にできることは他にありますか?必要な詳細を提供します

24
tan

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")
19
minhas23

これを解決するには、

  1. 実行

    Sudo R CMD javareconf

  2. 以下を/ etc/environmentに追加します。これは、マシンが再起動するたびに設定されます。

    LD_LIBRARY_PATH =/usr/lib/jvm/default-Java/jre/lib/AMD64/server /

    (パスに変更)

  3. 以下を実行します。

    ソース/ etc/environment

  4. rstudioサーバーの再起動
16

上記のいずれも機能しない場合は、これを試して、後で感謝します(一般的な答え):)

R CMD javareconf -e
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$Java_LD_LIBRARY_PATH
7
Haktan Suren
  • 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をインストールするのが最後のチャンスです。

2

現在誰かがここに来ている場合は、以下のアプローチを試してください:

手順:

  1. Rの場所を見つけます。 rsession-ld-library-pathファイルのrserver.confに保存されます。または、which Rを実行するだけです。通常、場所は/usr/lib64/R/libまたは/usr/lib64/Microsoft-r/3.3/lib64/R/libです

  2. 使用しているjreに応じて、通常libjvm.soパスにあるusr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/serverファイルを見つけます。 $ Java_HOME環境をチェックインします。

  3. ln -sSudo 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サーバーを再起動する

2
Tejas Lodaya

$Java_HOMEが正しい場所を指しているかどうかを確認します

echo $Java_HOME

私はopenjdkを使用していますが、$Java_HOMEが存在しないOracle-Javaフォルダを指していました。

$Java_HOME runを修正した後

Sudo R CMD javareconf

出力を確認してください。 Java headers gen./usr/bin/javahを指す必要があります。例えば:

djhurio@Skyforger ~ $ Sudo R CMD javareconf
Java interpreter : /usr/lib/jvm/default-Java/bin/Java
Java version     : 11.0.1
Java home path   : /usr/lib/jvm/default-Java
Java compiler    : /usr/lib/jvm/default-Java/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/lib/jvm/default-Java/bin/jar

この後、rJavaパッケージをインストールしてロードできます。

1
djhurio

@ user367this を指摘したように、解決策は/usr/lib/R/etc/ldpathsの次の行を変更することでした。

: ${R_Java_LD_LIBRARY_PATH=${Java_HOME}/lib/AMD64/server}

これによって:

: ${R_Java_LD_LIBRARY_PATH=${Java_HOME}/jre/lib/AMD64/server}

0
Fábio