ошибка загрузки 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
напрямую).
попробовав несколько исправлений, найденных в 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
(per это так ответ):экспорт переменной JAVA_HOME="/УСР/IP-адресов/переменной JAVA_HOME -в 1.8"
экспорт переменной LD_LIBRARY_PATH=$переменной JAVA_HOME/JRE и/Либ/сервера -
перенастроил java из командной строки следующим образом:
sudo R CMD javareconf-n
-
проверил
options("java.home")
и обнаружил, что это было установлено вNULL
. Я попытался установить его следующим образом (за это так вопрос):параметры ("java.главная"= " /библиотека/Java/JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / 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'
сообщение об ошибке разместил выше.
просматривая некоторые из сообщений, которые я уже смотрел, я заметил еще один такой ответ что я пропустил раньше, который рекомендовал открыть RStudio со следующим кодом командной строки, который дает RStudio правильный путь к java:
переменной LD_LIBRARY_PATH=$(из/usr/IP-адресов/переменной JAVA_HOME)/среда jre/lib в/сервера: открыт-в RStudio
это открыло окно RStudio, и я также смог загрузить rJava
и пакеты, которые зависят от него, без получения ошибки.
наконец, я попытался запустить R из командной строки (чего я раньше не делал). Оказывается, что в командной строке, загрузка rJava
или любой пакет, который зависит от rJava
работает и не выдает никаких ошибок.
Итак, теперь я могу получить rJava
чтобы работать, если я открываю RStudio из командной строки с кодом, который дает RStudio путь java (как отмечалось выше). Тем не менее, я хотел бы найти способ исправить основную проблему, какой бы она ни была, чтобы RStudio можно было открыть обычным способом Mac, без необходимости командной строки kludge. Я также обеспокоен тем, что наличие старой версии Java может вызвать проблемы в будущем.
у кого-нибудь есть идеи о том, как диагностировать и решить эту проблема?
15 ответов:
у меня была та же проблема, и я прошел те же шаги, что и вы. Последним шагом, позволяющим запустить RStudio через Finder / Spotlight, было связать libjvm.dylib to /usr / local / lib:
sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
-f
флаг для принудительной перезаписи существующего файла/ссылка
на OSX El Capitan 10.11 у пользователя нет разрешения на запись в /usr/lib. Вместо этого, используйте следующую команду:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
вы можете загрузить libjvm.dylib явно, путем запуска, как
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib') library(rJava)
на macOS High Sierra (10.13.1) и Java версии 9 вы должны использовать немного другой путь JVM (обратите внимание на отсутствие
jre
папка в пути по сравнению с инструкциями для более ранних версий Java):sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib
вы также должны уведомить R о JVM:
MY_R_VERSION=$(Rscript -e "cat(with(R.version, sprintf('%s.%s', major, substring(minor, 1, 1))))") ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/$MY_R_VERSION/Resources/lib/
следующая команда работает:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
после этого, в RStudio, загрузка rJava работает через загрузку пакета "xlsx".
library("xlsx")
С. п. #1 окружающая среда: Мас OS X Эль-Капитан 10.11.3+ С в RStudio 0.99.491+ и R 3.2.3+. (Теперь я проверил это также на macOS Sierra (10.12) и R. 3.3.1.)
С. п. #2 я считаю, что
openxlsx
намного быстрее и не полагается на Java для работы, поэтому я теперь использую этот пакет. Надеюсь, что это поможет другим.
вот как я настроил его работу правильно на двух Mac под управлением Mac OS X El Capitan (10.11.6):
удалите 'rJava', выполнив следующие команды в окне терминала:
Rscript -e 'remove.packages("rJava")' sudo Rscript -e 'remove.packages("rJava")'
Загрузите и установите программное обеспечение Java от Oracle:https://www.java.com/en/download/mac_download.jsp
добавить следующие строки
/Users/<userid>/.bashrc
С помощью вашего любимого редактор:# Set JAVA_HOME so rJava package can find it export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
закройте и перезапустите любой терминал, R и RStudio windows (чтобы забрать изменения в
.bashrc
).выполните следующую команду в окне терминала:
sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
выполните следующую команду в окне терминала:
sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
вы должны быть в состоянии использовать CRAN rJava, без необходимости перекомпилировать rJava или выполните дополнительные действия, связав общую библиотеку с каталогом библиотеки R Framework.
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries
вот простые шаги для этого:
- удалить пакет rJava: удалить.пакеты(rJava)
- закрыть R
- установите последнюю версию Java на вашем mac
- откройте терминал и введите следующую команду: sudo R CMD javareconf
откройте R и установите rJava с помощью этой команды:
установить.пакеты ("rJava", dependencies=TRUE, type= "source")
изображение не найдено проблема существует с совершенно новой установки на OSX High Sierra с последней Java SE 10 JDK.
Я смог решить проблему пути с rJava, используя исправление, найденное на странице проблем rJava Github: https://github.com/s-u/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS= - I/System/Library/Frameworks / JavaVM.рамки/заголовки
вот что работало для меня на MAC:
в своем
~/.profile
или~/.bashrc
добавьте следующую строку:%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1
% source .profile
(или% source .bashrc
)% sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
remove.packages(rJava)
remove.packages(Rweka)
- из терминала введите следующую команду:
%sudo R CMD javareconf
install.packages("rJava", dependencies = TRUE, type = "source")
install.packages("rJava", dependencies = TRUE, type = "source")
- загрузить
library("rJava", "RWeka")
удачи.
может быть, еще один простой ответ, который не касается вашей файловой системы:
$ install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
(замените
jdk1.8.0_131.jdk
С вашим путем JDK.)
проверьте расположение libjvm.файл dylib нужна.
попробуйте это, в моем случае это сработало:
dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib') library(rJava)
здесь вы можете скачать устаревшую версию Java 6 для El Capitan:https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US После этого пакет rJava работает для меня.
выполните в командной строке следующие команды:
sudo R CMD javareconf
несколько решений выше уже упоминали об этом, но они также предполагают, что один удалить и впоследствии переустановить
rJava
пакета. Я счел эти дополнительные шаги излишними.
эта строка ниже решила ту же проблему, что и у меня с
rJava
пакет, как и некоторые другие в этом обсуждении. Я уверен, что есть более чем одно решение этой проблемы, и я искренне благодарю их всех за их вклад, потому что иногда одна строка, как показано ниже, экономит много времени от мусора!sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib