Недавно я "обновил" от 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
(за этот ответ SO):экспорт JAVA_HOME = "/usr/libexec/java_home -v 1.8"
export 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 quit неожиданно", что указывает на то, что программа потерпела крах при попытке закрыть.
Наконец-то я решил установить 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: open -a RStudio
Это открыло окно RStudio, и я также смог загрузить rJava
и пакеты, зависящие от него, без ошибок.
Наконец, я попробовал запустить R из командной строки (чего я раньше не делал). Оказывается, что в командной строке загрузка rJava
или любого пакета, который зависит от rJava
, работает и не вызывает никаких ошибок.
Итак, теперь я могу заставить rJava
работать, если я открою RStudio из командной строки с кодом, который дает RStudio путь java (как отмечено выше). Тем не менее, я хотел бы найти способ исправить основную проблему, какова бы она ни была, чтобы RStudio можно было открыть обычным способом Mac, без необходимости командной строки kludge. Я также обеспокоен тем, что наличие старой версии установленной Java может вызвать проблемы в будущем.
Есть ли у кого-нибудь идеи о том, как диагностировать и решать эту проблему?