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

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

У меня была такая же проблема, и я прошел те же шаги, что и вы. Последним шагом для запуска RStudio через Finder / Spotlight было соединение libjvm.dylib с / 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) 

Следующие командные работы:

 sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib 

После этого, в RStudio, загрузка rJava работает через загрузку пакета «xlsx».

 library("xlsx") 

PS # 1 Окружающая среда: Mac OS X El Capitan 10.11.3+ с RStudio 0.99.491+ и R 3.2.3+. (Я тестировал это также на macOS Sierra (10.12) и R.3.3.1.)

PS # 2 Я обнаружил, что openxlsx работает намного быстрее и не полагается на работу Java, поэтому теперь я использую этот пакет. Надеюсь, что помогает другим.

В 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:

 ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/ 

Именно так я правильно настроил его на двух компьютерах Mac под управлением Mac OS X El Capitan (10.11.6):

  1. Удалите ‘rJava’, выполнив следующие команды в окне терминала:

     Rscript -e 'remove.packages("rJava")' sudo Rscript -e 'remove.packages("rJava")' 
  2. Загрузите и установите программное обеспечение Java из Oracle: https://www.java.com/ru/download/mac_download.jsp

  3. Добавьте следующие строки в /Users//.bashrc используя ваш любимый редактор:

     # Set JAVA_HOME so rJava package can find it export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre 
  4. Закройте и перезапустите все windows терминала, R и RStudio (чтобы получить изменения в .bashrc ).

  5. Выполните следующую команду в окне терминала:

     sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib 
  6. Выполните следующую команду в окне терминала:

     sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")' 

Вы должны иметь возможность использовать CRAN rJava, без необходимости перекомпилировать rJava или делать какие-либо дополнительные шаги, связывая общую библиотеку с библиотекой библиотек R frameworks.

 sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries 

Вот несколько простых шагов для этого:

  1. удалить пакет rJava: remove.packages (rJava)
  2. закрыть R
  3. установить последнюю Java на вас mac
  4. Откройте терминал и введите следующую команду: sudo R CMD javareconf
  5. Откройте R и установите rJava с помощью этой команды:

    install.packages (“rJava”, dependencies = TRUE, type = “source”)

Проблема с изображением не найдена с совершенно новой установкой на OSX High Sierra с новейшим Java SE 10 JDK.

Мне удалось решить проблему с rJava, используя исправление, обнаруженное на странице проблем rJava Github: https://github.com/su/rJava/issues/78

R CMD javareconf JAVA_CPPFLAGS = -I / Система / Библиотека / Рамки / JavaVM.framework / Заголовки

Вот что сработало для меня на MAC:

  1. в вашем ~/.profile или ~/.bashrc добавьте эту строку: %export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

    1.1 % source .profile (или % source .bashrc )

  2. % sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  3. remove.packages(rJava)
  4. remove.packages(Rweka)
  5. С терминала введите %sudo R CMD javareconf команду: %sudo R CMD javareconf
  6. install.packages("rJava", dependencies = TRUE, type = "source")
  7. install.packages("rJava", dependencies = TRUE, type = "source")
  8. Загрузите свою 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 
  • Построение графика во время цикла в RStudio
  • Как преобразовать R Markdown в HTML? Т.е. что делает «вязать HTML» в Rstudio 0.96?
  • Как добавить оглавление в Rmarkdown?
  • Interesting Posts

    FFmpeg – Обрезка и наложение – Заморозить рамку

    Сложные модели и частичные представления – проблема с привязкой модели в ASP.NET MVC 3

    Легальность использования оператора delete на указателе, полученном из размещения new

    Что продолжается после использования std :: move c ++ 11

    В чем разница между iteratorом и итерабельностью и как их использовать?

    Как обрезать UIImage на овальной форме или форме круга?

    Невозможно установить «example.com» в качестве записи CNAME?

    Строка не была признана действительным DateTime “format dd / MM / yyyy”

    Samba Linux – Почему машины окон не отображаются и не следуют символическим ссылкам?

    Сценарий Python не работает как cronjob

    Значимые миниатюры для видео с использованием FFmpeg

    Вызов виртуального метода в конструкторе базового classа

    CSS Div растягивает 100% высоты страницы

    Небольшая программа Haskell, скомпилированная с GHC в огромную двоичную

    sklearn – как применять различные преобразования на разных столбцах

    Давайте будем гением компьютера.