1. ホーム
  2. java

[解決済み] OSX Yosemiteにアップグレードした後、RStudio/RでrJavaのロードエラーが発生する。

2022-08-13 01:16:55

質問

最近、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"="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")

  • 最新のJava Development Kitをインストールし、再インストールしています。 rJava をソースから再インストールしました (どこでそれを見つけたか覚えていません)。

これらすべてを試している間のある時点で、私はロードされた rJava を読み込むことができましたが、R がクラッシュすることなく、上記のようなエラーメッセージが表示されました。さらに、RStudio を終了すると、正常に終了したように見えますが、終了しようとしたときにプログラムがクラッシュしたことを示す "RStudio quit unexpectedly" というメッセージがポップアップ表示されます。

最終的に、私はインストールすることにしました。 OS X 用の Java 2014-001 (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

これでRStudioのウィンドウが開き、ロードもできました。 rJava とそれに依存するパッケージもエラーにならずに読み込むことができました。

最後に、私はコマンドラインからRを実行してみました(これは以前にはやっていませんでした)。その結果、コマンドラインで rJava に依存するパッケージは rJava が動作し、エラーを投げません。

というわけで、これで rJava を動作させることができるようになりました。しかし、根本的な問題が何であれ、それを解決する方法を見つけ、コマンドラインでのごまかしを必要とせずに、通常の Mac での方法で RStudio を開くことができるようにしたいと思います。また、古いバージョンの Java がインストールされていると、将来的に問題が発生する可能性があることを懸念しています。

この問題を診断し解決する方法について、どなたかアイデアをお持ちでしょうか。

どのように解決するのですか?

私も同じ問題があり、あなたと同じステップを踏みました。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 フラグが追加され、既存のファイル/リンクを強制的に上書きします。