最近、OSX Mountain Lion から Yosemite に、R 3.1.3 から 3.2 に「アップグレード」しました。rJava
アップグレードの直後に、R またはRStudioxlsx
を開くと、Java 6 をインストールする必要があるというポップアップ メッセージが表示されました。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
と、動作するように見えます (または、少なくともエラー メッセージは表示されません)。
私はいくつかの異なる修正を試みましたが、そのうちのいくつかは数回でしたが、何をどの順序で行ったかを正確に思い出せません(これが非常に厄介であり、実際に追跡していなかったことに気づきませんでした) 、しかし、ここにその要点があります:
私に以下を追加しました(このSOの回答
.bash_profile
ごと):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"="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")
最新の Java Development Kit をインストール
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 を開くと、作業を開始できます (上記のとおり)。ただし、根本的な問題が何であれ、それを修正する方法を見つけて、コマンドラインの手間をかけずに通常の Mac の方法で RStudio を開くことができるようにしたいと考えています。また、古いバージョンの Java をインストールすると、将来的に問題が発生する可能性があることも懸念されます。
この問題を診断して解決する方法について誰かアイデアがありますか?