Błąd ładowania rJava w RStudio / r Po "aktualizacji" do OSX Yosemite

[18]} ostatnio "uaktualniłem" z OSX Mountain Lion do Yosemite i z R 3.1.3 do 3.2. Natychmiast po aktualizacji, kiedy otworzyłem R lub RStudio, dostałem wyskakujący komunikat informujący, że muszę zainstalować Javę 6. Dodatkowo, załadowanie rJava lub dowolnego pakietu, który zależy od rjavy (np. xlsx) spowodowało awarię RStudio (r również się rozbił, gdy próbowałem otworzyć R.app bezpośrednio).

Po wypróbowaniu kilku poprawek znalezionych na Stack Overflow i gdzie indziej (więcej szczegółów poniżej), jestem w punkcie, w którym ładowanie rJava lub dowolnego pakietu zależnego od 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’

Jednakże, jeśli wywołam R z linii poleceń i załaduję rJava lub dowolny pakiet zależny od rJava, wydaje się, że działa (a przynajmniej nie dostaję żadnych komunikatów o błędach).

Próbowałem wielu różnych prób 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 Bagno i tak naprawdę nie śledziłem), ale oto sedno sprawy:

  • Dodałem do mojego .bash_profile (per to tak odpowiedz):

    Export JAVA_HOME= "/ usr / libexec /java_home-v 1.8 "
    export LD_LIBRARY_PATH = $JAVA_HOME/jre/lib / server

  • Rekonfiguracja Javy z linii poleceń w następujący sposób:

    Sudo R CMD javareconf-n

  • Sprawdził options("java.home") i odkrył, że ustawiono to na NULL. Próbowałem ustawić go na następujące (per to pytanie):

    Options ("java.home " =" / Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home/jre")

  • Zainstalowałem najnowszy Java Development Kit i ponownie zainstalowałem rJava ze źródła (nie pamiętam, gdzie go znalazłem).

W pewnym momencie podczas próby wszystkich tych, byłem w stanie załadować {[1] } bez awarii R, ale zamiast tego dostał komunikat o błędzie wysłany powyżej. W ponadto, kiedy kończę RStudio, wydaje się, że zamykam normalnie, ale wtedy pojawi się komunikat "RStudio quit nieoczekiwanie", wskazujący, że program się rozbił podczas próby zamknięcia.

W końcu zdecydowałem się zainstalować Javę dla OS X 2014-001 (Java 6), ponieważ wydawało mi się, że kończą mi się opcje. Teraz, kiedy otworzyłem R lub RStudio, wyskakujący komunikat "This software needs Java 6" nie pojawił się. Jednak nadal otrzymywałem komunikat o błędzie .onLoad failed in loadNamespace() for 'rJava' opublikowany powyżej.

Przeglądając niektóre posty, na które już patrzyłem, zauważyłem inną odpowiedź , którą wcześniej przeoczyłem, która zalecała otwarcie RStudio z następującym kodem wiersza poleceń, który daje RStudio poprawną ścieżkę do Javy:

LD_LIBRARY_PATH=$(/usr / libexec / java_home)/jre/lib / server: open-a RStudio

, które otworzyło okno RStudio i mogłem również załadować rJava i pakiety, które od niego zależą, bez uzyskania błąd.

Na koniec próbowałem uruchomić R z linii poleceń(czego wcześniej nie robiłem). Okazuje się, że w wierszu poleceń wczytywanie rJava lub dowolnego zależnego od rJava pakietu działa i nie powoduje błędów.

Tak więc, mogę teraz uruchomić rJava jeśli otworzę RStudio z linii poleceń z kodem, który daje RStudio ścieżkę Javy (jak wspomniano powyżej). Chciałbym jednak znaleźć sposób na naprawienie podstawowego problemu, cokolwiek by to nie było, aby RStudio można było otworzyć w zwykły sposób Mac, bez konieczności kludge linii poleceń. Obawiam się również, że zainstalowanie starej wersji Javy może powodować problemy w dół drogi.

Czy ktoś ma jakieś pomysły jak zdiagnozować i rozwiązać ten problem?

Author: aseidlitz, 2015-06-09

15 answers

Miałem ten sam problem i przeszedłem przez te same kroki co Ty. Ostatnim krokiem umożliwiającym uruchomienie RStudio poprzez Finder/Spotlight było połączenie libjvm.dylib do / usr / local/lib:

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

-f Dodano flagę, aby wymusić nadpisanie istniejącego pliku / linku

 260
Author: aseidlitz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 09:04:08

Na OSX El Capitan 10.11, użytkownik nie ma uprawnień do zapisu do /usr / lib. Zamiast tego użyj następującego polecenia:

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
 48
Author: lalas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-20 17:43:35

Możesz załadować libjvm.dylib, by run like

dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)
 27
Author: yuan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-28 06:55:53

Na macOS High Sierra (10.13.1) i Javie w wersji 9 musisz użyć nieco innej ścieżki JVM (zwróć uwagę na brakujący folder jre w ścieżce w porównaniu z instrukcjami dla wcześniejszych wersji Javy):

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

Musisz również powiadomić R O JVM:

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/
 19
Author: Endre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-29 10:30:09

Działa następujące polecenie:

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

Następnie, w RStudio, Ładowanie rJava działa poprzez ładowanie pakietu "xlsx".

library("xlsx")

P. S. # 1 środowisko: Mac OS X El Capitan 10.11.3 + z RStudio 0.99.491 + i R 3.2.3+. (Teraz testowałem to również na macOS Sierra (10.12) i R. 3.3. 1.)

P. S. #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.

 16
Author: Sander W. van der Laan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-31 10:40:01

W ten sposób skonfigurowałem go poprawnie na dwóch komputerach Mac z systemem Mac OS X El Capitan (10.11.6):

  1. Odinstaluj "rJava", wydając następujące polecenia w oknie terminala:

    Rscript -e 'remove.packages("rJava")'
    sudo Rscript -e 'remove.packages("rJava")'
    
  2. Pobierz i zainstaluj oprogramowanie Java z Oracle: https://www.java.com/en/download/mac_download.jsp

  3. Dodaj następujące wiersze do /Users/<userid>/.bashrc używając swojego ulubionego edytora:

    # Set JAVA_HOME so rJava package can find it
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
    
  4. Zamknij i uruchom ponownie dowolny terminal, R i okna RStudio (aby odebrać zmiany do .bashrc).

  5. Uruchom następujące polecenie w oknie terminala:

    sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
    
  6. Uruchom następujące polecenie w oknie terminala:

    sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
    
 5
Author: Gregory R. Warnes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-16 19:13:12

Powinieneś być w stanie korzystać z CRAN rJava, bez konieczności rekompilowania rJava lub wykonywania jakichkolwiek dodatkowych kroków, łącząc bibliotekę współdzieloną z katalogiem biblioteki rjava.

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries
 5
Author: Jim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 21:08:19

Oto proste kroki:

  1. usuń pakiet rJava: Usuń.Pakiety (rJava)
  2. Zamknij R
  3. Zainstaluj najnowszą Javę na komputerze mac
  4. Otwórz terminal i wpisz polecenie: sudo R CMD javareconf
  5. Otwórz R i zainstaluj rJava za pomocą tego polecenia:

    Install.packages ("rJava", dependencies=TRUE, type="source")

 4
Author: Hamidreza Ahady Dolatsara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-05 17:08:29

Problem image not found istnieje z zupełnie nową instalacją na OSX High Sierra z najnowszą Java SE 10 JDK.

Udało mi się rozwiązać problem ze ścieżką z rJava za pomocą poprawki znalezionej na stronie problemów z Github rJava: https://github.com/s-u/rJava/issues/78

R CMD javareconf JAVA_CPPFLAGS= - i/System/Library/Framework / JavaVM.framework / Headers

 2
Author: Galen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-03 16:38:18

Oto co u mnie działało na Macu:

  1. W Twoim ~/.profile LUB ~/.bashrc Dodaj ten wiersz: %export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

    1.1 % source .profile (lub % 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. z terminala wpisz to polecenie: %sudo R CMD javareconf
  6. install.packages("rJava", dependencies = TRUE, type = "source")
  7. install.packages("rJava", dependencies = TRUE, type = "source")
  8. Załaduj swoje library("rJava", "RWeka")
Powodzenia.
 1
Author: Nasser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-05 09:30:17

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 ścieżką JDK.)

 1
Author: mokjpn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-09 04:47:37

Sprawdź lokalizację libjvm.plik dylib.

Spróbuj tego, w moim przypadku to zadziałało:

dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)
 1
Author: Sagar Neel De,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-04 11:09:32

Tutaj możesz pobrać legacy Java w wersji 6 dla El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Po tym, pakiet rJava działa dla mnie.

 0
Author: ignazw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-03 21:19:01

Uruchom następujący wiersz poleceń: sudo R CMD javareconf

Kilka powyższych rozwiązań wspomniało o tym, ale sugerują również, aby usunąć i następnie ponownie zainstalować pakiet rJava. Uważam te dodatkowe kroki za niepotrzebne.

 0
Author: Megatron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-01 19:37:38

Poniższy wiersz rozwiązał ten sam problem, który miałem z rJava pakietem, jak inni w tej dyskusji. Jestem pewien, że istnieje więcej niż jedno rozwiązanie tego problemu i szczerze dziękuję wszystkim za ich wkład, ponieważ czasami jedna linia, taka jak ta poniżej, oszczędza dużo czasu od pójścia do kosza!

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
 -1
Author: Süleyman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-29 08:57:18