最近、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
(perこのSOの答え):エクスポート JAVA_HOME="/usr/libexec/java_home -v 1.8"
エクスポート LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/server次のようにコマンドラインから Java を再構成しました。
sudo R CMD javareconf -n
確認した
options("java.home")
ところ、これが に設定されていましたNULL
。次のように設定してみました(このSOの質問):オプション("java.home"="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")
最新の Java 開発キットをインストールし、
rJava
ソースから再インストールしました (どこで見つけたかは覚えていません)。
これらすべてを試しているうちに、ある時点で R をクラッシュさせることなくロードできましたrJava
が、代わりに上記のエラー メッセージが表示されました。さらに、RStudio を終了すると、正常に終了したように見えますが、その後「RStudio が予期せず終了しました」というメッセージが表示され、終了しようとしたときにプログラムがクラッシュしたことを示します。
ついにインストールすることにしたOS X 2014-001 用 Java(Java 6) は、選択肢がなくなったように思えたので、削除しました。これで、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
rJava
これにより、RStudio ウィンドウが開き、エラーが発生することなく、それに依存するパッケージをロードすることもできました。
最後に、コマンドラインから R を実行してみました (これまでは実行したことがありませんでした)。コマンドラインでは、rJava
または に依存するパッケージの読み込みはrJava
機能し、エラーは発生しないことがわかりました。
したがって、RStudio に Java パスを与えるコード (上記参照) を使用してコマンド ラインから RStudio を開くと、作業を開始できますrJava
。ただし、根本的な問題が何であれ、コマンド ラインの kludge を必要とせずに通常の Mac の方法で RStudio を開くことができるように、修正する方法を見つけたいと思います。また、古いバージョンの Java がインストールされていると、将来的に問題が発生する可能性があることも懸念しています。
この問題を診断して解決する方法について何かアイデアをお持ちの方はいらっしゃいますか?
ベストアンサー1
私も同じ問題を抱えており、あなたと同じ手順を実行しました。Finder/Spotlight 経由で RStudio を起動できるようにするための最後の手順は、libjvm.dylib を /usr/local/lib にリンクすることでした。
sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
-f
既存のファイル/リンクを強制的に上書きするためのフラグが追加されました