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?
Yosemite
, więc nie jestem pewien. Poniżej znajdziesz odpowiedź związaną z El Capitan
.
El Capitan
, poniższe rozwiązanie jest pomocne, gdy tylko RStudio
ł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
.
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.