最近、OSX Mountain LionからYosemiteに、およびR 3.1.3から3.2に「アップグレード」しました。アップグレード直後にRまたはRStudioを開くと、Java 6をインストールする必要があることを示すポップアップメッセージが表示されました。さらに、rJava
rJavaに依存するパッケージ(またはなど)をロードすると、xlsx
RStudioがクラッシュしました(Rもクラッシュしました)私がR.app
直接開いてこれを試したとき)。
Stack Overflowやその他の場所で見つかったいくつかの修正を試した後(詳細は以下を参照)、ロードrJava
または依存するパッケージrJava
がRをクラッシュさせなくなりましたが、次のエラーが発生します。
library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so
Reason: image not found
Error: package or namespace load failed for ‘rJava’
ただし、コマンドラインからRを呼び出してから、rJava
またはに依存するパッケージをロードするとrJava
、動作するように見えます(または少なくともエラーメッセージは表示されません)。
私はいくつかのさまざまな修正を試みましたが、そのうちのいくつかは数回行いましたが、私が何をどのような順序で行ったかを正確に思い出せません(これがこのような悲惨なことであり、実際に追跡していなかったことに気づきませんでした)。 、しかしここにその要点があります:
私に
.bash_profile
(このSOの回答ごとに)以下を追加しました:export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
export LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / server次のようにコマンドラインからjavaを再構成しました。
sudo R CMD javareconf -n
確認し
options("java.home")
、これがに設定されていることを発見しましたNULL
。私はそれを次のように設定しようとしました(このSOの質問ごとに):options( "java.home" = "/ライブラリ/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")
最新のJava開発キットをインストールし
rJava
、ソースから再インストールしました(どこで見つけたのか思い出せません)。
これらをすべて試してみたある時点で、rJava
Rをクラッシュさせることなくロードできましたが、代わりに上記のエラーメッセージが表示されました。さらに、RStudioを終了すると、正常に終了するように見えますが、「RStudioが突然終了しました」というメッセージがポップアップ表示され、終了しようとしたときにプログラムがクラッシュしたことを示します。
オプションが不足しているようだったので、ついにOS X 2014-001(Java 6)にJava をインストールすることにしました。RまたはRStudioを開いたときに、「このソフトウェアにはJava 6が必要です」というポップアップメッセージが表示されなくなりました。しかし、.onLoad failed in loadNamespace() for 'rJava'
上記のエラーメッセージがまだ表示されていました。
私がすでに見たいくつかの投稿を確認したところ、私が以前に見逃していた別のSOの回答に気づきました。これは、RStudioにJavaへの正しいパスを与える次のコマンドラインコードでRStudioを開くことを推奨しました。
LD_LIBRARY_PATH = $(/ usr / libexec / java_home)/ jre / lib / server:open -a RStudio
これによりRStudioウィンドウが開き、rJava
エラーが発生することなく、それに依存するパッケージをロードしてパッケージ化することもできました。
最後に、コマンドラインからRを実行してみました(これまでに実行したことがない)。コマンドラインでは、ロードrJava
またはパッケージに依存するすべてのパッケージがrJava
機能し、エラーをスローしません。
したがって、rJava
RStudioにJavaパスを提供するコード(上記のとおり)を使用してコマンドラインからRStudioを開くと、作業を開始できます。ただし、根本的な問題を修正する方法を見つけたいと思います。これにより、コマンドラインを使用しなくても、RStudioを通常のMacの方法で開くことができます。また、古いバージョンのJavaがインストールされていると、問題が発生する可能性があることも心配しています。
この問題を診断して解決する方法について誰かが何か考えを持っていますか?
Yosemite
しているので、よくわかりません。に関連する回答については、以下を参照してくださいEl Capitan
。
El Capitan
以下の解決策は期待どおりにRStudio
ロードrJava
されるとすぐに役立ちます。
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
は、共有ライブラリのリストと、それらがどのように解決されるかを確認してください。のランタイムコンテンツを見つける方法がわかりません@rpath
。
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
トリックを使用する前にこれを機能させましたが、機能しなくなりました。私はこの問題に関してブログ投稿を書いて、そこでこの問題を説明しました。他の人もこの設定でこの問題を経験しているのか、それとも私のせいなのか。