web-dev-qa-db-ja.com

R、rJavaエラーのロード

MacOSシエラ(10.12.5)でR(バージョン3.4.0)を実行していますが、rJavaライブラリを使用する必要があるxlsxライブラリを使用しようとしています。

Rコンソールでlibrary(rJava)を使用してrJavaをロードしようとすると(RStudioでも端末でも違いはありません)、次のエラーメッセージが表示されます。

Fehler: package or namespace load failed for ‘rJava’:
 .onLoad in loadNamespace() für 'rJava' fehlgeschlagen, Details:
  Aufruf: dyn.load(file, DLLpath = DLLpath, ...)
  Fehler: kann shared object '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so' nicht laden:
  dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
  Reason: image not found

問題をグーグルで調べたところ、いくぶん似た(ただし、少しずつ問題が少しずつ異なる)投稿が多数見つかりました this SO question それらの間で最も有望です。

提案された手順は私の場合に適応する必要があり、私は初心者なので、それらを実装することができませんでした。私に何ができる?

追加情報:

シェルコマンドJava -version 戻り値:

Java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

シェルコマンドR CMD javareconf 戻り値:

Java interpreter : /usr/bin/Java
Java version     : 1.8.0_131
Java home path   : /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Non-system Java on macOS

trying to compile and link a JNI program 
detected JNI cpp flags    : -I$(Java_HOME)/../include -I$(Java_HOME)/../include/darwin
detected JNI linker flags : -L$(Java_HOME)/lib/server -ljvm
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include/darwin  -I/usr/local/include   -fPIC  -Wall -g -O2  -c conftest.c -o conftest.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -    L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation


Java_HOME      /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Java library path: $(Java_HOME)/lib/server
JNI cpp flags    : -I$(Java_HOME)/../include -I$(Java_HOME)/../include/darwin
JNI linker flags : -L$(Java_HOME)/lib/server -ljvm
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.

どんな助けでも大歓迎です!

8
MrMax

できます!

異なるJava=バージョンをインストールして再インストールし、RコマンドでrJavaを再インストールした後install.packages("rJava") Rコンソール(シェルウィンドウ)にライブラリをロードできなかったエラーメッセージをスローします。

その後、私は this post の答えを使用して、次のシェルコマンドを実行することでRStudioで動作するようにできました。

Sudo ln -f -s $(/usr/libexec/Java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

結局、それほど複雑ではありません!皆様、お待ちいただきありがとうございます。

17
MrMax

MAC_HOMEパスは、MAC OSのバージョンによって異なります。いくつかのケースでは/jreフォルダーがあり、いくつかのケースでは/Homeディレクターが手動で/serverフォルダーに移動します。ターミナルでCDコマンドを使用し、pwdを使用して全体をコピーしますパスを使用してJava.homeを設定すると、rJavaライブラリを簡単にロードできます。これは私が問題を修正することができた方法です

options("Java.home"="/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/lib")

Sys.setenv(LD_LIBRARY_PATH='$Java_HOME/server')

dyn.load('/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/lib/server/libjvm.dylib')

library(rJava)
1
vinay karagod