Нещодавно я "модернізував" з OSX Mountain Lion до Yosemite і з R 3.1.3 до 3.2. Відразу після оновлення, коли я відкрив R або RStudio, я отримав спливаюче повідомлення про те, що мені потрібно встановити Java 6. Крім того, завантаження rJava
або будь-який пакет, що залежить від rJava (наприклад, xlsx
), спричинив збій RStudio (R також вийшов з ладу коли я спробував це, відкривши R.app
безпосередньо).
Після спробу декількох виправлень, знайдених у Stack Overflow та інших місцях (детальніше нижче), я перебуваю в точці, коли завантаження rJava
або будь-який пакет, який залежить від rJava
більше не спричиняє збій R, але призводить до наступної помилки:
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’
Однак якщо я запускаю R з командного рядка, а потім завантажую rJava
або будь-який пакет, від якого залежитьrJava
, він, здається, працює (або принаймні я не отримую жодних повідомлень про помилки).
Я спробував декілька різних спроб виправлень, деякі з них кілька разів, і не можу точно пригадати, що я робив у тому порядку (не усвідомлював, що це такий бід і не насправді слідкував) , але ось суть цього:
До мого
.bash_profile
(на цю відповідь ТАК ) додано наступне :експортувати JAVA_HOME = "/ usr / libexec / java_home -v 1,8" "
експорту LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / серверПереконфігуруйте Java з командного рядка так:
sudo R CMD javareconf -n
Перевірив
options("java.home")
і виявив, що це було встановленоNULL
. Я спробував встановити його на наступне (за цим питанням ТАК ):параметри ("java.home" = "/ Бібліотека / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Зміст / Головна / jre")
Встановив останній комплект Java Development Kit і перевстановив
rJava
з джерела (не пам'ятаю, де я його знайшов).
У якийсь момент, пробуючи все це, я зміг завантажити rJava
без збою R, але натомість отримав повідомлення про помилку, розміщене вище. Крім того, коли я вийшов з RStudio, воно, здавалося б, нормально закривається, але тоді з'явиться повідомлення "RStudio несподівано кинуто", що вказує на те, що програма зазнала аварії під час спроби закрити.
Нарешті я вирішив встановити Java для OS X 2014-001 (Java 6), оскільки мені здалося, що у мене не вистачає варіантів. Тепер, коли я відкрив R або RStudio, спливаюче повідомлення "Це програмне забезпечення потребує Java 6" більше не з'являлося. Однак я все ще отримував .onLoad failed in loadNamespace() for 'rJava'
повідомлення про помилку, розміщене вище.
Переглядаючи деякі з публікацій, які я вже переглянув, я помітив ще одну відповідь, яку я пропустив раніше, який рекомендував відкрити RStudio із наступним кодом командного рядка, який дає RStudio правильний шлях до Java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: open-RStudio
Це відкрило вікно RStudio, і я також зміг завантажити rJava
та залежні від нього пакунки, не отримуючи помилок.
Нарешті, я спробував запустити R з командного рядка (чого раніше не робив). Виявляється, що в командному рядку завантаження rJava
або будь-який пакет, який залежить від rJava
роботи, не видає помилок.
Отже, я зараз rJava
можу приступити до роботи, якщо відкрию RStudio з командного рядка з кодом, який надає RStudio шлях Java (як зазначено вище). Однак я хотів би знайти спосіб виправити основну проблему, якою б вона не була, щоб RStudio можна було відкрити звичайним способом Mac, не потребуючи помилок командного рядка. Я також стурбований тим, що встановлення старої версії Java може спричинити проблеми в дорозі.
Хтось має ідеї, як діагностувати та вирішити це питання?
Yosemite
, тому я не впевнений. Дивіться нижче відповідь, пов’язану з El Capitan
.
El Capitan
рішення нижче є корисним, як тільки RStudio
завантажуються, rJava
як очікувалося.
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
отримати список спільних бібліотек та спосіб їх вирішення. Я не впевнений, як відкрити вміст часу виконання @rpath
.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
фокусом, але більше не працює. Я написав повідомлення в блозі щодо цієї проблеми та описав цю проблему там. Цікаво, чи відчувають інші проблеми і в цій конфігурації, чи я винен.