Ошибка загрузки rJava в RStudio / R после «обновления» до OSX Yosemite
Я недавно «обновился» с OSX Mountain Lion до Yosemite и с R 3.1.3 до 3.2. Сразу после обновления, когда я открыл R или RStudio, я получил всплывающее сообщение о том, что мне нужно установить Java 6. Кроме того, загрузкаrJava
или любой пакет, который зависит от rJava (например,xlsx
) вызвал сбой RStudio (R также разбился, когда я попытался это открытьR.app
напрямую).
Попробовав несколько исправлений, найденных в Переполнении стека и в других местах (более подробно ниже), я нахожусь в точке загрузки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
(вэтот так ответ):
export 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
, Я попытался установить следующееэтот ТАК вопрос):
опции ( "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 / сервер: открыть -a RStudio
Это открыло окно RStudio, и я также смог загрузитьrJava
и пакеты, которые зависят от него, без получения ошибки.
Наконец, я попытался запустить R из командной строки (чего я раньше не делал). Оказывается, в командной строке загружаетсяrJava
или любой пакет, который зависит отrJava
работает и не выдает никаких ошибок.
Итак, теперь я могу получитьrJava
работать, если я открою RStudio из командной строки с кодом, который дает RStudio путь Java (как отмечено выше). Тем не менее, я хотел бы найти способ исправить основную проблему, какой бы она ни была, чтобы RStudio можно было открывать обычным способом для Mac, без необходимости запуска командной строки. Я также обеспокоен тем, что установка старой версии Java может вызвать проблемы в будущем.
У кого-нибудь есть идеи о том, как диагностировать и решить эту проблему?