Проблемы при попытке загрузить пакет в R из-за rJava

Когда я печатаю require(xlsx) для того, чтобы загрузить пакет xlsx в R отображаются следующие сообщения:

> require(xlsx)
Loading required package: xlsx
Loading required package: xlsxjars
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: JAVA_HOME cannot be determined from the Registry
Failed with error:  ‘package ‘rJava’ could not be loaded’

Я также пытался загрузить rJava пакет, но получил это сообщение об ошибке:

require(rJava)
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.

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

11 ответов

Причина, вероятно, связана с тем, что вы используете 64-битную версию ОС и R, но у вас не установлена ​​Java с той же архитектурой. Вам нужно скачать 64-битную версию Java с этой страницы: https://www.java.com/en/download/manual.jsp

После этого просто попробуйте перезагрузить xlsx пакет. Вам не нужно перезапускать R.

У меня была похожая проблема, которая работала для меня, чтобы установить JAVA_HOME. Я устал это сначала в R:

Sys.setenv(JAVA_HOME = "C:/Program Files/Java/jdk1.8.0_101/")

И когда это действительно сработало, я установил его в Свойства системы -> Дополнительно -> Переменные среды, добавив новую системную переменную. Затем я перезапустил R/RStudio и все заработало.

Это потому, что ни одна из версий Java (32 бит /64 бит) отсутствует на вашем компьютере. Попробуйте установить оба Jdks и запустить код.
После установки Jdks откройте R и введите код

system("java -version")

Это даст вам установленную версию Jdk. Затем попробуйте загрузить пакет rJava. Это сработало для меня.

У меня была похожая проблема. Это вызвано зависимым пакетом 'rJava'. Эта проблема может быть преодолена путем перенаправления R на использование другого JAVA_HOME,

if(Sys.getenv("JAVA_HOME")!=""){
    Sys.setenv(JAVA_HOME="")
}
library(rJava)

Это сработало для меня.

Если у вас есть эта ошибка в RStudio, используйте приведенный выше код окружающей среды Лорен и измените вашу версию R на 32-битную версию в меню Инструменты, Глобальные параметры. Должны быть как 32-битные, так и 64-битные опции R, если у вас более новая версия. Это потребует перезагрузки R и ограничит ваши параметры памяти. Установка 64-битной версии JRE не потребуется.

Альтернативный пакет, который вы можете использовать, - readxl. Этот пакет не требует внешних зависимостей.

Мне просто нужно было убедиться, что Java 64-битная (чтобы соответствовать R).

Вот как я скачал и установил 64-битную Java:

  1. Перейдите по адресу: https://www.java.com/en/download/manual.jsp .
  2. Нажмите «Windows Offline (64-разрядная версия)».
  3. Установите его (вам может потребоваться найти загруженный файл и дважды щелкнуть его, или он может установиться автоматически)
  4. Закройте и снова откройте сеанс R/RStudio.
  5. Все будет работать как положено!

Для чтения/записи файлов Excel вы можете использовать:

  • readxlпакет для чтения и writexlпакет для письма
  • openxlsxпакет для чтения и записи

С xlsxа также XLConnect(которые используют rjava) вы столкнетесь с ошибками памяти, если у вас большие файлы

Если у вас есть эта проблема с macOS, здесь нет простого пути:(Особенно, когда вы хотите использовать R3.4. Я уже был там;)

R 3.4, rJava, macOS и еще больше беспорядка;)

Для R3.3 это немного проще (R3.3 был скомпилирован с использованием другого компилятора).

R, Java, rJava и macOS приключения

Ответ в ссылке решил мою проблему.

До разрешения я попытался добавить JAVA_HOME в среду Windows. Это решило эту ошибку, но создало другую проблему. Решение по приведенной выше ссылке решает эту проблему без создания дополнительных проблем.

Я думаю, что нашел решение, так как у меня была такая же проблема!

Мое исправление состояло в том, чтобы установить как 32-разрядное, так и 64-разрядное обновление 181 JRE (Java Runtime Environment) версии 8 (мне нужно 32-разрядное для другого приложения, но ваше исправление может быть просто переустановлено 64-разрядным само по себе.)

Другие вопросы по тегам