Ich habe kürzlich ein Upgrade von OSX Mountain Lion auf Yosemite und von R 3.1.3 auf 3.2 durchgeführt. Unmittelbar nach dem Upgrade, als ich R oder RStudio öffnete, erhielt ich eine Popup-Meldung, dass ich Java 6 installieren musste. Außerdem führte das Laden rJava
oder eines von rJava abhängigen Pakets (z. B. xlsx
) zum Absturz von RStudio (R stürzte ebenfalls ab als ich dies durch R.app
direktes Öffnen versuchte ).
Nachdem ich einige Korrekturen versucht habe, die bei Stack Overflow und anderswo gefunden wurden (weitere Details unten), bin ich an einem Punkt angelangt, an dem das Laden rJava
oder eines davon abhängigen Pakets rJava
nicht mehr zum Absturz von R führt, sondern zu folgendem Fehler führt:
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’
Wenn ich jedoch R über die Befehlszeile aufrufe und dann rJava
ein Paket lade , von dem rJava
es abhängt , scheint es zu funktionieren (oder zumindest erhalte ich keine Fehlermeldungen).
Ich habe verschiedene Korrekturversuche versucht, einige davon einige Male, und kann mich nicht genau erinnern, was ich in welcher Reihenfolge getan habe (wusste nicht, dass dies so ein Morast sein würde und habe nicht wirklich den Überblick behalten). , aber hier ist das Wesentliche:
Folgendes zu meiner hinzugefügt
.bash_profile
(gemäß dieser SO-Antwort ):export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
export LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverJava über die Befehlszeile wie folgt neu konfiguriert:
sudo R CMD javareconf -n
Überprüft
options("java.home")
und festgestellt, dass dies eingestellt warNULL
. Ich habe versucht, Folgendes einzustellen (gemäß dieser SO-Frage ):Optionen ("java.home" = "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre")
Das neueste Java Development Kit installiert und
rJava
von der Quelle neu installiert (ich kann mich nicht erinnern, wo ich das gefunden habe).
Irgendwann, als ich all dies ausprobierte, konnte ich laden, rJava
ohne R zum Absturz zu bringen, aber stattdessen wurde die oben angegebene Fehlermeldung angezeigt. Wenn ich RStudio beende, scheint es außerdem normal zu schließen, aber dann wird die Meldung "RStudio wird unerwartet beendet" angezeigt, die darauf hinweist, dass das Programm beim Versuch, das Programm zu schließen, abgestürzt ist.
Ich entschied mich schließlich, Java für OS X 2014-001 (Java 6) zu installieren , da mir anscheinend die Optionen ausgehen. Als ich nun R oder RStudio öffnete, wurde die Popup-Meldung "Diese Software benötigt Java 6" nicht mehr angezeigt. Ich habe jedoch immer noch die oben angegebene .onLoad failed in loadNamespace() for 'rJava'
Fehlermeldung erhalten.
Beim Überprüfen einiger der Beiträge, die ich bereits angesehen hatte, bemerkte ich eine weitere SO-Antwort , die ich zuvor verpasst hatte. Sie empfahl, RStudio mit dem folgenden Befehlszeilencode zu öffnen, der RStudio den richtigen Pfad zu Java gibt:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: Öffnen Sie -a RStudio
Das öffnete ein RStudio-Fenster und ich konnte auch davon rJava
abhängige Pakete laden , ohne einen Fehler zu erhalten.
Zuletzt habe ich versucht, R über die Befehlszeile auszuführen (was ich vorher noch nicht getan hatte). Es stellt sich heraus, dass in der Befehlszeile das Laden rJava
oder ein Paket, das von der rJava
Arbeit abhängt und keine Fehler auslöst.
Ich kann jetzt rJava
arbeiten, wenn ich RStudio über die Befehlszeile mit dem Code öffne, der RStudio den Java-Pfad gibt (wie oben angegeben). Ich möchte jedoch einen Weg finden, um das zugrunde liegende Problem zu beheben, so wie es auch sein mag, damit RStudio auf die übliche Mac-Weise geöffnet werden kann, ohne dass ein Befehlszeilen-Kludge erforderlich ist. Ich mache mir auch Sorgen, dass die Installation einer alten Java-Version später zu Problemen führen könnte.
Hat jemand Ideen, wie dieses Problem diagnostiziert und gelöst werden kann?
Yosemite
, also bin ich mir nicht sicher. Unten finden Sie eine Antwort zu El Capitan
.
El Capitan
unten stehende Lösung ist hilfreich, sobald sie RStudio
geladen wirdrJava
wie erwartet.
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
eine Liste der gemeinsam genutzten Bibliotheken und deren Auflösung abzurufen. Ich bin nicht sicher, wie ich den Laufzeitinhalt von ermitteln soll @rpath
.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
Trick benutzt habe, aber es funktioniert nicht mehr. Ich habe einen Blog-Beitrag zu diesem Problem geschrieben und dieses Problem dort beschrieben. Ich frage mich, ob dieses Problem auch bei anderen in dieser Konfiguration auftritt oder ob es meine Schuld ist.