Ошибка загрузки 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 может вызвать проблемы в будущем.

У кого-нибудь есть идеи о том, как диагностировать и решить эту проблему?

Ответы на вопрос(15)

Ваш ответ на вопрос