Проблемы при попытке загрузить пакет в 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:
- Перейдите по адресу: https://www.java.com/en/download/manual.jsp .
- Нажмите «Windows Offline (64-разрядная версия)».
- Установите его (вам может потребоваться найти загруженный файл и дважды щелкнуть его, или он может установиться автоматически)
- Закройте и снова откройте сеанс R/RStudio.
- Все будет работать как положено!
Для чтения/записи файлов Excel вы можете использовать:
-
readxl
пакет для чтения иwritexl
пакет для письма -
openxlsx
пакет для чтения и записи
С
xlsx
а также
XLConnect
(которые используют rjava) вы столкнетесь с ошибками памяти, если у вас большие файлы
Если у вас есть эта проблема с macOS, здесь нет простого пути:(Особенно, когда вы хотите использовать R3.4. Я уже был там;)
R 3.4, rJava, macOS и еще больше беспорядка;)
Для R3.3 это немного проще (R3.3 был скомпилирован с использованием другого компилятора).
Ответ в ссылке решил мою проблему.
До разрешения я попытался добавить JAVA_HOME в среду Windows. Это решило эту ошибку, но создало другую проблему. Решение по приведенной выше ссылке решает эту проблему без создания дополнительных проблем.
Я думаю, что нашел решение, так как у меня была такая же проблема!
Мое исправление состояло в том, чтобы установить как 32-разрядное, так и 64-разрядное обновление 181 JRE (Java Runtime Environment) версии 8 (мне нужно 32-разрядное для другого приложения, но ваше исправление может быть просто переустановлено 64-разрядным само по себе.)