Niedawno „zaktualizowałem” system OSX Mountain Lion do Yosemite iz wersji R 3.1.3 do 3.2. Zaraz po aktualizacji, kiedy otworzyłem R lub RStudio, pojawiło się wyskakujące okienko z informacją, że muszę zainstalować Javę 6. Ponadto ładowanie rJava
lub dowolny pakiet zależny od rJava (np. xlsx
) Spowodował awarię RStudio (R również się zawiesił kiedy próbowałem tego, otwierając R.app
bezpośrednio).
Po wypróbowaniu kilku poprawek znalezionych w Stack Overflow i innych miejscach (więcej szczegółów poniżej), jestem w punkcie, w którym ładowanie rJava
lub dowolny pakiet, od którego zależy, rJava
nie powoduje już awarii R, ale powoduje następujący błąd:
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’
Jeśli jednak wywołam R z wiersza poleceń, a następnie załaduję rJava
lub dowolny pakiet, od którego zależy rJava
, wydaje się, że działa (lub przynajmniej nie otrzymuję żadnych komunikatów o błędach).
Próbowałem wielu różnych poprawek, niektóre z nich kilka razy, i nie pamiętam dokładnie, co zrobiłem w jakiej kolejności (nie zdawałem sobie sprawy, że to będzie takie grzęzawisko i tak naprawdę nie śledziłem) , ale oto istota tego:
Dodano do mojego
.bash_profile
(zgodnie z tą odpowiedzią SO ):export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
export LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverPonownie skonfigurowano Javę z wiersza poleceń w następujący sposób:
sudo R CMD javareconf -n
Sprawdziłem
options("java.home")
i odkryłem, że jest to ustawione naNULL
. Próbowałem ustawić go na następujące (na to pytanie SO ):opcje ("java.home" = "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre")
Zainstalowałem najnowszy zestaw Java Development Kit i ponownie zainstalowałem
rJava
ze źródła (nie pamiętam, gdzie go znalazłem).
W pewnym momencie, próbując wszystkich, udało mi się załadować rJava
bez awarii R, ale zamiast tego otrzymałem komunikat o błędzie opublikowany powyżej. Ponadto, kiedy opuszczałem RStudio, wydawałoby się, że zamyka się normalnie, ale wtedy wyskakuje komunikat „RStudio zakończyło się nieoczekiwanie”, wskazując, że program uległ awarii podczas próby zamknięcia.
Ostatecznie zdecydowałem się zainstalować Javę na OS X 2014-001 (Java 6), ponieważ wydawało mi się, że się opcje. Teraz, gdy otworzyłem R lub RStudio, wyskakujący komunikat „To oprogramowanie wymaga Java 6” nie jest już wyświetlany. Jednak nadal otrzymywałem .onLoad failed in loadNamespace() for 'rJava'
powyższy komunikat o błędzie.
Przeglądając niektóre posty, które już przeglądałem, zauważyłem inną TAK odpowiedź , którą wcześniej przegapiłem, która zalecała otwarcie RStudio z następującym kodem wiersza poleceń, który daje RStudio poprawną ścieżkę do java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: open -a RStudio
To otworzyło okno RStudio i mogłem też załadować rJava
i pakiety, które od niego zależą, bez błędu.
Na koniec spróbowałem uruchomić R z wiersza poleceń (czego wcześniej nie robiłem). Okazuje się, że w linii poleceń ładowanie rJava
czy jakikolwiek pakiet zależny od rJava
działa i nie wyrzuca żadnych błędów.
Więc teraz mogę dostać rJava
do pracy, jeśli otworzę RStudio z wiersza poleceń z kodem, który daje RStudio ścieżkę java (jak wspomniano powyżej). Chciałbym jednak znaleźć sposób na naprawienie podstawowego problemu, cokolwiek by to nie było, tak aby RStudio można było otworzyć w zwykły sposób na Maca, bez potrzeby używania wiersza poleceń. Obawiam się również, że zainstalowanie starej wersji Javy może spowodować problemy.
Czy ktoś ma jakieś pomysły jak zdiagnozować i rozwiązać ten problem?
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
sztuczki, ale już nie działa. Ja napisałem blogu dotyczącą tej kwestii i opisane tam ten problem. Zastanawiam się, czy inni też mają ten problem w tej konfiguracji, czy to moja wina.Yosemite
, więc nie jestem pewien. Poniżej znajdziesz odpowiedź związaną zEl Capitan
.El Capitan
, poniższe rozwiązanie jest pomocne, gdy tylkoRStudio
ładuje sięrJava
zgodnie z oczekiwaniami.otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
uzyskać listę współdzielonych bibliotek i sposoby ich rozwiązania. Nie jestem pewien, jak odkryć zawartość środowiska wykonawczego@rpath
.Odpowiedzi:
Miałem ten sam problem i przeszedłem przez te same kroki co Ty. Ostatnim krokiem umożliwiającym uruchomienie RStudio przez Finder / Spotlight było połączenie libjvm.dylib z / usr / local / lib:
-f
flaga jest dodawana, aby wymusić nadpisanie istniejącego pliku / łączaźródło
cannot jfindclass[[1]]
który może pochodzić z rJavy i sterownika JDBC/usr/local/lib/libjvm.dylib
pliku, ponieważ / usr / local / lib / nie wydaje się znajdować na @rpath. Na przykład:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
W systemie OSX El Capitan 10.11 użytkownik nie ma uprawnień do zapisu w / usr / lib. Zamiast tego użyj następującego polecenia:
źródło
Możesz załadować libjvm.dylib jawnie, uruchamiając jak
źródło
+1
za zaoferowanie jednak alternatywy.W systemie macOS High Sierra (10.13.1) i Java w wersji 9 musisz użyć nieco innej ścieżki JVM (zwróć uwagę na brakujący
jre
folder w ścieżce w porównaniu z instrukcjami dla wcześniejszych wersji Java):Musisz również powiadomić R o JVM:
źródło
Następujące polecenie działa:
Następnie, w RStudio, ładowanie rJava działa poprzez ładowanie pakietu "xlsx".
Środowisko PS nr 1: Mac OS X El Capitan 10.11.3+ z RStudio 0.99.491+ i R 3.2.3+. (Przetestowałem to teraz także na macOS Sierra (10.12) i R.3.3.1.)
PS # 2 Uważam, że
openxlsx
jest znacznie szybszy i nie polega na Javie, więc teraz używam tego pakietu. Mam nadzieję, że to pomoże innym.źródło
openxlsx
FTW!openxlsx
tak lepiej użyj .Powinieneś być w stanie używać CRAN rJava bez konieczności ponownej kompilacji rJava lub wykonywania jakichkolwiek dodatkowych kroków, łącząc bibliotekę współdzieloną z katalogiem biblioteki frameworków R.
źródło
Oto jak skonfigurowałem go poprawnie na dwóch komputerach Mac z systemem Mac OS X El Capitan (10.11.6):
Odinstaluj 'rJava', wydając następujące polecenia w oknie terminala:
Pobierz i zainstaluj oprogramowanie Java z Oracle: https://www.java.com/en/download/mac_download.jsp
Dodaj następujące wiersze, aby
/Users/<userid>/.bashrc
użyć swojego ulubionego edytora:Zamknij i uruchom ponownie wszystkie okna terminala, R i RStudio (aby pobrać zmiany
.bashrc
).Uruchom następujące polecenie w oknie terminala:
Uruchom następujące polecenie w oknie terminala:
źródło
Oto proste kroki:
Otwórz R i zainstaluj rJava za pomocą tego polecenia:
install.packages ("rJava", dependencies = TRUE, type = "source")
źródło
libjvm.dylib
do/usr/local/lib
sprawiło, że też się zaczęło :)Problem z nie znalezionym obrazem występuje w przypadku zupełnie nowej instalacji w systemie OSX High Sierra z najnowszą wersją Java SE 10 JDK.
Udało mi się rozwiązać problem ze ścieżką w rJava za pomocą poprawki znalezionej na stronie problemów rJava Github: https://github.com/su/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Headers
źródło
Oto, co zadziałało dla mnie na MAC:
w twoim
~/.profile
lub~/.bashrc
dodaj tę linię:%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1
% source .profile
(lub% 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")
Powodzenia.
źródło
Może kolejna prosta odpowiedź, która nie dotyka twojego systemu plików:
$ 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
(Zastąp
jdk1.8.0_131.jdk
swoją ścieżką JDK.)źródło
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
. Udało mi się zobaczyć, że brakowało rpathotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Sprawdź lokalizację pliku libjvm.dylib.
Spróbuj tego, w moim przypadku to zadziałało:
źródło
Przeszedłem przez wszystkie rozwiązania, które udało mi się znaleźć, a następnie zainstalowałem jdk-11.0.1_osx-x64_bin.dmg z: Oracle do pobrania
Po tym wszystko działało idealnie.
Sprawdź wersję biblioteki, która nie została załadowana podczas uruchamiania biblioteki ('rJava') i dopasuj ją do wersji Java, którą chcesz zainstalować.
źródło
Zauważyłem, że 'rJava' jest dość restrykcyjny co do wersji JDK podczas ładowania w Rstudio.
W moim przypadku (Mac OS. 10.14.6 - Mojave) zainstalowałem jdk-13, który był testowany z jdk-11.
Połączyłem moją wersję JDK z nieistniejącym katalogiem, który został uznany za prawidłowy przez Rstudio (JDK 11):
i zaskakująco działa jak urok ... Przy
okazji, nie było problemu z uruchomieniem 'rJavy' zgodnie z poprzednimi instrukcjami w rodzimym R.
źródło
Tutaj możesz pobrać starszą wersję Java 6 dla El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Po wykonaniu tej czynności pakiet rJava działa dla mnie.
źródło
Ta linia poniżej rozwiązała ten sam problem, który miałem z
rJava
pakietem, jak kilka innych w tej dyskusji. Jestem pewien, że istnieje więcej niż jedno rozwiązanie tego problemu i serdecznie dziękuję im wszystkim za ich wkład, ponieważ czasami jedna linijka, taka jak ta poniżej, oszczędza dużo czasu przed wyrzuceniem do kosza!źródło
Uruchom następujące polecenie w wierszu poleceń:
sudo R CMD javareconf
Wspomniało o tym kilka powyższych rozwiązań, ale sugerują one również usunięcie, a następnie ponowne zainstalowanie
rJava
pakietu. Uznałem, że te dodatkowe kroki są niepotrzebne.źródło
sudo R CMD javareconf
alelibrary(rJava)
nadal daje te same błędy: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
Możesz zmienić odniesienie w języku R za pomocą następującego polecenia:
źródło