Недавно я "обновился" с 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
(за этот SO-ответ ) добавлено следующее :экспорт JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
экспорт LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverПеренастроил java из командной строки следующим образом:
sudo R CMD javareconf -n
Проверил
options("java.home")
и обнаружил, что для него установлено значениеNULL
. Я попытался установить его следующим образом (по этому вопросу SO ):опции ( "java.home" = "/ Library / 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'
сообщение об ошибке, опубликованное выше.
При просмотре некоторых сообщений, которые я уже просматривал, я заметил еще один ответ SO, который я пропустил раньше, который рекомендовал открыть RStudio с помощью следующего кода командной строки, который дает RStudio правильный путь к java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: открыть -a 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
трюка, но оно больше не работает. Я написал сообщение в блоге об этой проблеме и описал ее там. Интересно, испытывают ли другие тоже эту проблему в этой конфигурации или это моя вина.