OSX Yosemiteに「アップグレード」した後のRStudio / RでのrJavaロードエラー


122

最近、OSX Mountain LionからYosemiteに、およびR 3.1.3から3.2に「アップグレード」しました。アップグレード直後にRまたはRStudioを開くと、Java 6をインストールする必要があることを示すポップアップメッセージが表示されました。さらに、rJavarJavaに依存するパッケージ(またはなど)をロードすると、xlsxRStudioがクラッシュしました(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、ソースから再インストールしました(どこで見つけたのか思い出せません)。

これらをすべて試してみたある時点で、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を開くと、作業を開始できます。ただし、根本的な問題を修正する方法を見つけたいと思います。これにより、コマンドラインを使用しなくても、RStudioを通常のMacの方法で開くことができます。また、古いバージョンのJavaがインストールされていると、問題が発生する可能性があることも心配しています。

この問題を診断して解決する方法について誰かが何か考えを持っていますか?


このソリューションはEl Capitanでも引き続き機能しますか?LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudioトリックを使用する前にこれを機能させましたが、機能しなくなりました。私はこの問題に関してブログ投稿書いて、そこでこの問題を説明しました。他の人もこの設定でこの問題を経験しているのか、それとも私のせいなのか。
Paul Klemm

まだを使用Yosemiteしているので、よくわかりません。に関連する回答については、以下を参照してくださいEl Capitan
eipi10

では、新しい質問を投稿します。はい、El Capitan以下の解決策は期待どおりにRStudioロードrJavaされるとすぐに役立ちます。
Paul Klemm

2
RStudioを再起動した後に機能しました
Pranay Aryal

診断時にotool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so は、共有ライブラリのリストと、それらがどのように解決されるかを確認してください。のランタイムコンテンツを見つける方法がわかりません@rpath
デイブX

回答:


279

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


4
El CapitanからSierraへのアップグレードが行われたときに同じ問題を修正するように働きました。+1
Murta 2016

2
これは多くの問題を解決しました。特に、元のエラーがcannot jfindclass[[1]]rJavaおよびJDBCドライバーに起因する場合
Jenks

1
Macbook ProでJavaを更新するたびに、このコマンドを実行する必要があります。それはまだMacOSのシエラ10.12.5およびJavaのバージョン8のアップデート141上で動作します
thiagoveloso

11
これはほとんど私にとってはうまくいきました。さらに/usr/local/lib/libjvm.dylib、/ usr / local / lib /は@rpathにないようなので、Rフレームワークにシンボリックリンクをファイルに追加する必要がありました。例:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
Dave X


53

OSX El Capitan 10.11では、ユーザーには/ usr / libへの書き込み権限がありません。したがって、代わりに次のコマンドを使用します。

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

29

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

dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)

確かに可能ですが、便利ではありません。受け入れられた答えはおそらくより良いオプションです。+1代わりを提供するため。
thiagoveloso 2017

27

macOS High Sierra(10.13.1)とJavaバージョン9では、少し異なるJVMパスを使用する必要があります(jre以前のJavaバージョンの手順と比較して、パスにフォルダーがないことを確認してください)。

sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib

また、JVMについてRに通知する必要があります。

MY_R_VERSION=$(Rscript -e "cat(with(R.version, sprintf('%s.%s', major, substring(minor, 1, 1))))")
ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/$MY_R_VERSION/Resources/lib/

驚くばかり。うまくいきました!El Capitanの提案がシエラでは機能しないようです
KarthikS 2018

おかげで、これも私にとってはうまくいきました。macOS High Sierra 10.13.2
pat_krat

これは私を助けました。通知R部分はしませんでした。それはまだ機能しました。どうもありがとう:)
Harish

17

次のコマンドは機能します:

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

その後、RStudioで、rJavaのロードは「xlsx」パッケージのロードを通じて機能します。

library("xlsx")

PS#1環境:Mac OS X El Capitan 10.11.3 +、RStudio 0.99.491+およびR 3.2.3+。(私はこれをmacOS Sierra(10.12)とR.3.3.1でもテストしました。)

PS#2私はそれopenxlsxがはるかに速く、Javaに依存せずに動作することがわかったので、今はそのパッケージを使用しています。他の人の役に立つことを願っています。


1
ありがとう、私の友人、あなたは私の日を救った。私は周りにある他の解決策を試しましたが、これが私の問題を解決したものです。
Matteo De Felice

1
感謝の投票を持つ別のEl Capユーザー(ただしMacGUIを使用)。最初にこれを試したのは、それが最も単純に見え(Javaランタイム1.6をインストールするための以前の取り組みでは問題が解決しなかった)、pkg:rJavaおよび依存関係pkg; XLConnectですぐに成功したためです。Oracleから入手可能で、AppleページからリンクされているレガシーJava 1.6をインストールする必要がある場合があります。
IRTFM

1
こんにちは、あなたのアドバイスはMacOS High Sierraでも機能します。ありがとうございました!
user8193079

1
openxlsxFTW!
2018年

はい!@iled:同意しopenxlsxます。とにかく使用するほうがいいです。
Sander W. van der Laan

7

あなたは、再コンパイルしなくても、CRAN rJavaを使用することができるはずrJavaをまたはRフレームワークライブラリディレクトリに共有ライブラリをリンクすることにより、任意の追加の手順を実行します。

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries

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")'

これを実行中にlicuucライブラリ/リンカーエラーが発生します。説明できますか?macOS Sierraにインストールしようとしています。詳細はこちら(以前はEl Capitan)。
hh

5

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

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

    install.packages( "rJava"、dependency = TRUE、type = "source")


私がここに行く前に、私は実際にこれをしました。rjavaに依存するライブラリをインストールしましたが、起動しませんでした。libjvm.dylibinto のリンク/usr/local/libも作成されました:)
jonalv

3

イメージが見つからない問題は、最新のJava SE 10 JDKを使用してOSX High Sierraに新しくインストールした場合に発生します。

rJava Githubの問題のページにある修正を使用して、rJavaのパスの問題を解決できました:https : //github.com/su/rJava/issues/78

R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Headers


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")

幸運を祈ります。


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パスに置き換えます。)


2
私は自作のRを持っていて、私のために働いた正確なコマンドは:install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/server /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.soです。私はrpathが欠落していることを確認できましたotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Ian

@Ian多分あなたは私がHomebrewでJavaをインストールし、rJavaを動かそうとしている、ここでの解決策を知っています。アイデア?
hh 2017

1

libjvm.dylibファイルの場所を確認します。

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

dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)

1

私が見つけたすべてのトラブルシューティングを行った後、jdk-11.0.1_osx-x64_bin.dmgをインストールしました:Oracleダウンロード

その後はすべてが完璧に機能しました。

library( 'rJava')を実行したときにロードされなかったライブラリのバージョンを確認し、インストールする必要があるJavaのバージョンと一致させます。


1

Rstudioでの読み込み中、「rJava」はJDKのバージョンにかなり厳しいことに気付きました。
私の場合(Mac OS。10.14.6-Mojave)、jdk-11に対してテストされたjdk-13をインストールしました。
私のJDKバージョンを、Rstudio(JDK 11)で有効であると想定されている存在しないディレクトリにリンクしました。

sudo ln -sf /Library/Java/JavaVirtualMachines/jdk-13.jdk/ /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk


驚いたことに、それは魅力のように動作します... ところで、ネイティブRで以前の指示に従って 'rJava'を実行することには問題がありませんでした。



0

以下のこの行はrJava、このディスカッションの他の人がしたのと同じように、パッケージで抱えていたのと同じ問題を解決しました。この問題には2つ以上の解決策があると確信しています。以下のような1行でゴミ箱に行く時間を大幅に節約できる場合があるので、貢献してくださった皆さんに心から感謝します。

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

0

コマンドラインで次のコマンドを実行します。 sudo R CMD javareconf

上記のいくつかのソリューションではこれについて言及していrJavaますが、パッケージを削除してから再インストールすることも推奨されています。これらの追加の手順は不要であることがわかりました。


私はあなたの解決策を試しましたsudo R CMD javareconfが、library(rJava)それでも同じエラーが発生します: Error: package or namespace load failed for ‘rJava’: .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.5/Resources/library/rJava/libs/rJava.so': ... Reason: image not found
Lazarus Thurston

0

次のコマンドを使用して、Rの参照を変更できます。

sudo install_name_tool -change /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.