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?
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.Yosemite
, also bin ich mir nicht sicher. Unten finden Sie eine Antwort zuEl Capitan
.El Capitan
unten stehende Lösung ist hilfreich, sobald sieRStudio
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
.Antworten:
Ich hatte das gleiche Problem und ging die gleichen Schritte durch wie Sie. Der letzte Schritt, um das Starten von RStudio über Finder / Spotlight zu ermöglichen, bestand darin, libjvm.dylib mit / usr / local / lib zu verknüpfen:
-f
Das Flag wird hinzugefügt, um das Überschreiben vorhandener Dateien / Links zu erzwingenquelle
cannot jfindclass[[1]]
von rJava und einem JDBC-Treiber stammt/usr/local/lib/libjvm.dylib
Datei einen Symlink im R-Framework hinzufügen , da / usr / local / lib / nicht auf dem @rpath zu sein scheint. Zum Beispiel:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
Unter OSX El Capitan 10.11 hat der Benutzer keine Berechtigung zum Schreiben in / usr / lib. Verwenden Sie stattdessen den folgenden Befehl:
quelle
Sie können die libjvm.dylib explizit laden, indem Sie wie ausführen
quelle
+1
für eine Alternative anzubieten.Unter macOS High Sierra (10.13.1) und Java Version 9 müssen Sie einen etwas anderen JVM-Pfad verwenden (beachten Sie den fehlenden
jre
Ordner im Pfad im Vergleich zu den Anweisungen für frühere Java-Versionen):Sie müssen R auch über die JVM informieren:
quelle
Der folgende Befehl funktioniert:
Danach funktioniert das Laden von rJava in RStudio durch Laden des Pakets "xlsx".
PS # 1-Umgebung: Mac OS X El Capitan 10.11.3+ mit RStudio 0.99.491+ und R 3.2.3+. (Ich habe dies jetzt auch unter macOS Sierra (10.12) und R.3.3.1 getestet.)
PS # 2 Ich finde, dass
openxlsx
das viel schneller ist und nicht auf Java angewiesen ist, also verwende ich jetzt dieses Paket. Hoffe das hilft anderen.quelle
openxlsx
FTW!openxlsx
sowieso verwenden.Sie sollten in der Lage sein, CRAN rJava zu verwenden, ohne rJava neu kompilieren oder zusätzliche Schritte ausführen zu müssen, indem Sie die gemeinsam genutzte Bibliothek mit dem Bibliotheksverzeichnis des R-Frameworks verknüpfen.
quelle
So habe ich es auf zwei Macs mit Mac OS X El Capitan (10.11.6) richtig konfiguriert:
Deinstallieren Sie 'rJava', indem Sie die folgenden Befehle in einem Terminalfenster ausgeben:
Laden Sie die Java-Software von Oracle herunter und installieren Sie sie: https://www.java.com/de/download/mac_download.jsp
Fügen Sie
/Users/<userid>/.bashrc
Ihrem Lieblingseditor die folgenden Zeilen hinzu :Schließen Sie alle Terminal-, R- und RStudio-Fenster und starten Sie sie neu (um die Änderungen zu übernehmen
.bashrc
).Führen Sie den folgenden Befehl in einem Terminalfenster aus:
Führen Sie den folgenden Befehl in einem Terminalfenster aus:
quelle
Hier sind die einfachen Schritte dafür:
Öffnen Sie R und installieren Sie rJava mit dem folgenden Befehl:
install.packages ("rJava", Abhängigkeiten = TRUE, Typ = "Quelle")
quelle
libjvm.dylib
in/usr/local/lib
machte es auch beginnen :)Das Problem mit dem nicht gefundenen Image tritt bei einer brandneuen Installation unter OSX High Sierra mit dem neuesten Java SE 10 JDK auf.
Ich konnte das Pfadproblem mit rJava mithilfe des Fixes auf der Seite mit den rJava Github-Problemen lösen: https://github.com/su/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Header
quelle
Hier, was für mich auf MAC funktioniert hat:
in Ihrer
~/.profile
oder~/.bashrc
fügen Sie diese Zeile hinzu:%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1
% source .profile
(oder% source .bashrc
)% sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
remove.packages(rJava)
remove.packages(Rweka)
%sudo R CMD javareconf
install.packages("rJava", dependencies = TRUE, type = "source")
install.packages("rJava", dependencies = TRUE, type = "source")
library("rJava", "RWeka")
Viel Glück.
quelle
Vielleicht eine andere einfache Antwort, die Ihr Dateisystem nicht berührt:
$ 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
(Ersetzen Sie
jdk1.8.0_131.jdk
durch Ihren JDK-Pfad.)quelle
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
. Ich konnte sehen, dass der Pfad mitotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Überprüfen Sie den Speicherort der Datei libjvm.dylib.
Versuchen Sie dies, in meinem Fall hat dies funktioniert:
quelle
Ich habe alle Fehlerbehebungsmaßnahmen durchlaufen, die ich finden konnte, und dann jdk-11.0.1_osx-x64_bin.dmg installiert von: Oracle Downloads
Danach hat alles perfekt funktioniert.
Überprüfen Sie die Version der Bibliothek, die beim Ausführen der Bibliothek nicht geladen wurde ('rJava'), und passen Sie sie an die Java-Version an, die Sie installieren müssen.
quelle
Ich habe festgestellt, dass 'rJava' beim Laden in Rstudio ziemlich streng mit der JDK-Version ist.
In meinem Fall (Mac OS. 10.14.6 - Mojave) hatte ich jdk-13 installiert, das gegen jdk-11 getestet wurde.
Ich habe meine JDK-Version mit einem nicht vorhandenen Verzeichnis verknüpft, das von Rstudio als gültig angenommen wurde (JDK 11):
und überraschenderweise funktioniert es wie ein Zauber ... Übrigens
gab es kein Problem, 'rJava' gemäß den vorherigen Anweisungen in native R auszuführen.
quelle
Hier können Sie die ältere Java-Version 6 für El Capitan herunterladen: https://support.apple.com/kb/DL1572?viewlocale=de_DE&locale=de_DE Danach funktioniert das rJava-Paket für mich.
quelle
Diese Zeile unten hat das gleiche Problem gelöst, das ich mit dem
rJava
Paket hatte, wie einige andere in dieser Diskussion. Ich bin mir sicher, dass es mehr als eine Lösung für dieses Problem gibt, und ich danke ihnen allen aufrichtig für ihre Beiträge, denn manchmal spart eine Zeile wie die folgende viel Zeit, um in den Papierkorb zu gelangen!quelle
Führen Sie in der Befehlszeile Folgendes aus:
sudo R CMD javareconf
Einige der oben genannten Lösungen haben dies erwähnt, aber sie schlagen auch vor, das
rJava
Paket zu entfernen und anschließend erneut zu installieren . Ich fand diese zusätzlichen Schritte unnötig.quelle
sudo R CMD javareconf
aber dielibrary(rJava)
gibt immer noch die gleichen Fehler: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
Sie können die Referenz in R mit dem folgenden Befehl ändern:
quelle