124

最近、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し、ソースから再インストールしました (どこで見つけたか思い出せません)。

これらすべてを試しているある時点で、rJavaR をクラッシュさせることなくロードできましたが、代わりに上記のエラー メッセージが表示されました。また、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機能し、エラーをスローしないことがわかりました。

したがって、rJavaRStudio に Java パスを与えるコードを使用してコマンド ラインから RStudio を開くと、作業を開始できます (上記のとおり)。ただし、根本的な問題が何であれ、それを修正する方法を見つけて、コマンドラインの手間をかけずに通常の Mac の方法で RStudio を開くことができるようにしたいと考えています。また、古いバージョンの Java をインストールすると、将来的に問題が発生する可能性があることも懸念されます。

この問題を診断して解決する方法について誰かアイデアがありますか?

4

18 に答える 18

280

私は同じ問題を抱えていて、あなたと同じ手順を実行しました。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既存のファイル/リンクを強制的に上書きするフラグが追加されました

于 2015-06-24T23:57:39.127 に答える
29

次のように実行することで、libjvm.dylib を明示的にロードできます。

dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)
于 2015-12-28T06:55:53.630 に答える
6

これは、Mac OS X El Capitan (10.11.6) を実行している 2 台の Mac で正しく動作するように構成した方法です。

  1. ターミナル ウィンドウで次のコマンドを発行して、「rJava」をアンインストールします。

    Rscript -e 'remove.packages("rJava")'
    sudo Rscript -e 'remove.packages("rJava")'
    
  2. Oracle から Java ソフトウェアをダウンロードしてインストールします: https://www.java.com/en/download/mac_download.jsp

  3. /Users/<userid>/.bashrcお気に入りのエディターを使用して、次の行を追加します。

    # Set JAVA_HOME so rJava package can find it
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
    
  4. ターミナル、R、および RStudio ウィンドウを閉じて再起動します (への変更を取得するため.bashrc)。

  5. ターミナル ウィンドウで次のコマンドを実行します。

    sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
    
  6. ターミナル ウィンドウで次のコマンドを実行します。

    sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
    
于 2016-11-16T19:13:12.570 に答える
5

簡単な手順は次のとおりです。

  1. rJava パッケージを削除します: remove.packages(rJava)
  2. クローザー
  3. Mac に最新の Java をインストールする
  4. ターミナルを開き、次のコマンドを入力します: sudo R CMD javareconf
  5. R を開き、次のコマンドで rJava をインストールします。

    install.packages("rJava", dependencies=TRUE, type="source")

于 2016-07-05T16:46:02.700 に答える
1

ここで、MACで私のために働いたもの:

  1. ~/.profileまたは~/.bashrc次の行を追加 します。%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

    1.1 % source .profile(または% source .bashrc)

  2. % sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  3. remove.packages(rJava)
  4. remove.packages(Rweka)
  5. ターミナルから次のコマンドを入力します。 %sudo R CMD javareconf
  6. install.packages("rJava", dependencies = TRUE, type = "source")
  7. install.packages("rJava", dependencies = TRUE, type = "source")
  8. あなたのロードlibrary("rJava", "RWeka")

幸運を祈ります。

于 2016-09-05T08:31:11.907 に答える
1

libjvm.dylib ファイルの場所を確認してください。

これを試してください、私の場合、これはうまくいきました:

dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)
于 2018-04-04T10:37:31.120 に答える
1

ファイルシステムに触れない別の簡単な答えかもしれません:

$ install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so

( jdk1.8.0_131.jdkJDK パスに置き換えます。)

于 2017-05-09T04:27:58.533 に答える