Использование пакета rJava на Win7 64 бит с R
Я пытаюсь установить rJava
на компьютере с Win 7 64 бит. Когда я бегу
install.packages("rJava")
все вроде бы нормально
Installing package(s) into ‘C:/Users/djq/Documents/R/win-library/2.13’
(as ‘lib’ is unspecified)
trying URL 'http://software.rc.fas.harvard.edu/mirrors/R/bin/windows/contrib/2.13/rJava_0.9-1.zip'
Content type 'application/zip' length 654936 bytes (639 Kb)
opened URL
downloaded 639 Kb
package 'rJava' successfully unpacked and MD5 sums checked
The downloaded packages are in
C:\TEMP\RtmpW2eAUw\downloaded_packages
но когда я попытался загрузить библиотеку library(rJava)
Я получаю следующую ошибку:
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: inDL(x, as.logical(local), as.logical(now), ...)
error: unable to load shared object 'C:/Users/me/Documents/R/win-library/2.13/rJava/libs/x64/rJava.dll':
LoadLibrary failure: %1 is not a valid Win32 application.
Error: package/namespace load failed for 'rJava'
Я установил Java JRE (пробуя как 32-, так и 64-битные версии) и JDK (используя и 32-, и 64-битную версии). Моя версия R R version 2.13.1 (2011-07-08)
и я использую RStudio.
Если я попытаюсь использовать 32-битный R, я могу загрузить rJava
хорошо. Проблема только в том rJava
не работает в R 64 бит? Как я могу сказать, что пакет только для 32 вместо 64?
редактировать: только что опубликовал R.version()
:
> R.Version()
$platform
[1] "x86_64-pc-mingw32"
$arch
[1] "x86_64"
$os
[1] "mingw32"
$system
[1] "x86_64, mingw32"
$status
[1] ""
$major
[1] "2"
$minor
[1] "13.1"
$year
[1] "2011"
$month
[1] "07"
$day
[1] "08"
$`svn rev`
[1] "56322"
$language
[1] "R"
$version.string
[1] "R version 2.13.1 (2011-07-08)"
13 ответов
Обновление (июль 2018 года):
Последняя версия CRAN для rJava найдет jvm.dll
автоматически, без ручной настройки PATH
или же JAVA_HOME
, Однако обратите внимание, что:
- Чтобы использовать rJava в 32-битном R, вам нужна Java для Windows x86
- Чтобы использовать rJava в 64-битном R, вам нужна Java для Windows x64
- Для создания или проверки пакетов R с несколькими арками (по умолчанию) вам необходимо установить как Java для Windows x64, так и Java для Windows x86. На Win 64 первый устанавливается в
C:\Program files\Java\
и последний вC:\Program Files (x86)\Java\
поэтому они не конфликтуют.
Начиная с версии Java 9, поддержка x86 (win32) была прекращена. Следовательно, последняя работающая мультиархивная установка заключается в установке jdk-8u172-windows-i586.exe и jdk-8u172-windows-x64.exe, а затем двоичного пакета из CRAN:
install.packages("rJava")
Двоичный пакет из CRAN должен сам поднять jvm. Только для экспертов: для сборки rJava из исходного кода вам понадобится --merge-multiarch
флаг:
install.packages('rJava', type = 'source', INSTALL_opts='--merge-multiarch')
Старый ответ:
(Примечание: многие люди в других ответах / комментариях сказали, что нужно удалить JAVA_HOME, так что учтите это. Недавно я не возвращался к этой проблеме, чтобы узнать, все ли перечисленные ниже шаги все еще необходимы.)
Вот небольшой совет о том, как начать работу с R + rJava в Windows 7 64bit. Есть несколько возможностей, но у большинства есть фатальные недостатки. Вот что сработало для меня:
Добавить jvm.dll в ваш путь
Для rJava, моста Java R <->, потребуется jvm.dll, но R не сможет найти эту DLL. Он находится в папке, как
C:\Program Files\Java\jdk1.6.0_25\jre\bin\server
или же
C:\Program Files\Java\jre6\jre\bin\client
Где бы вы ни находились, добавьте этот каталог в переменную PATH Windows. (Windows -> "Путь" -> "Изменить переменные среды для вашей учетной записи" -> PATH -> изменить значение.)
Возможно, у вас уже есть Java в вашем PATH. Если это так, вы должны найти каталог клиент / сервер в том же "домашнем" каталоге Java, что и каталог PATH.
Чтобы быть в безопасности, убедитесь, что ваша архитектура соответствует. Если у вас есть Java в Program Files
, это 64-битный, так что вы должны запустить R64. Если у вас есть Java в Program Files (x86)
32-битный, так что вы используете простой 32-битный R.
Перезапустите R из меню Windows
Если R работает, выйдите.
Из меню Пуск, Пуск R / RGUI, RStudio. Это очень важно, чтобы заставить R забрать ваши изменения PATH.
Установите rJava 0.9.2.
Более ранние версии не работают! Зеркала не обновлены, поэтому зайдите на сайт www.rforge.net: http://www.rforge.net/rJava/files/. Обратите внимание на совет там
“Please use
`install.packages('rJava',,'http://www.rforge.net/')`
to install.”
Это почти правильно. Это на самом деле работает:
install.packages('rJava', .libPaths()[1], 'http://www.rforge.net/')
Следите за пунктуацией! Загадочный ".libPaths()[1]" просто говорит R установить пакет в каталог первичной библиотеки. По какой-то причине оставить значение пустым не получится, даже если оно по умолчанию.
Работа rJava во многом зависит от конфигурации вашего компьютера:
- Вы должны использовать одну и ту же 32-битную или 64-битную версию для R и JDK/JRE. Смесь этого никогда не сработает (по крайней мере, для меня).
Если вы используете 64-битную версию, убедитесь, что вы не установили JAVA_HOME как переменную окружения. Если эта переменная установлена, rJava не будет работать по любой причине (по крайней мере, для меня). Вы можете легко проверить в R, если JAVA_HOME установлен с
Sys.getenv("JAVA_HOME")
Если вам нужно установить JAVA_HOME (например, он нужен для maven или чего-то еще), вы можете деактивировать его в R-сессии с помощью следующего кода перед загрузкой rJava:
if (Sys.getenv("JAVA_HOME")!="")
Sys.setenv(JAVA_HOME="")
library(rJava)
Это должно сделать свое дело в большинстве случаев. Кроме того, это решит проблему с использованием пакета rJava на 64-битной Win7 с R тоже. Я заимствовал идею сброса переменной окружения из-за сбоя установки пакета R: rJava.
Для меня настройка JAVA_HOME сделала свое дело (вместо того, чтобы сбросить, как в другом ответе, данном здесь). Либо в Windows:
set JAVA_HOME="C:\Program Files\Java\jre7\"
Или внутри R:
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jre7\\")
Но, пожалуй, лучшее решение (начиная с rJava 0.9-4) полностью переопределяет в настройке R Windows JAVA_HOME:
options(java.home="C:\\Program Files\\Java\\jre7\\")
library(rJava)
На последний вопрос есть простой ответ:
> .Machine$sizeof.pointer
[1] 8
Это означает, что я бегу R64. Если бы я работал под управлением 32-разрядной версии R, он вернул бы значение 4. То, что вы используете 64-разрядную ОС, не означает, что вы будете использовать 64-разрядную версию R, а из сообщения об ошибке, по-видимому, нет.
РЕДАКТИРОВАТЬ: если пакет имеет двоичные файлы, то они находятся в отдельных каталогах. Специфика будет зависеть от ОС. Обратите внимание, что ваша ошибка LoadLibrary произошла, когда он пытался найти DLL в ...rJava/libs/x64/...
В моей системе MacOS папка...rJava/libs/...`имеет 3 подкаталога: i386, ppc и x86_64. (Файлы PPC - явно бесполезный багаж.)
Извините за некро. Я тоже столкнулся с той же проблемой и обнаружил, что rJava
надеется JAVA_HOME
указать на JRE. Если у вас установлен JDK, скорее всего, ваш JAVA_HOME
указывает на JDK. Мое быстрое решение:
Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="\\"))
У меня была связанная проблема с rJava. Он будет загружаться, но пакет, который зависит от него, не будет загружаться.
Пользователи могут тратить много времени на jvm.dll, PATH и JAVA_HOME, когда реальное исправление заключается в том, чтобы заставить установщик просто забыть о i386. Используйте опцию для install.packages. (это также работает, когда используется библиотека drat. (заслуга Dason)
install.packages("SqlRender",INSTALL_opts="--no-multiarch")
Кроме того, вы можете изменить только свой путь пользователя с помощью команды win следующим образом:
setx PATH "C:\Program Files\Java\jre1.8.0_102\bin\server;%PATH%"
У меня были некоторые проблемы с определением пакета Java, который был установлен, когда я столкнулся с этой проблемой, так как предыдущие ответы не совсем помогли мне. Чтобы разобраться, я набрал:
Sys.setenv(JAVA_HOME="C:/Program Files/Java/
и затем нажмите вкладку, и две предложенные директории были "jre1.8.0_31/" и "jre7 /"
Jre7 не решил мою проблему, но jre1.8.0_31 / сделал. Окончательный ответ был запущен (перед библиотекой (rJava)):
Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_31/")
Я использую 64-битную Windows 8.1 Надеюсь, это поможет кому-то еще.
Обновить:
Проверьте свою версию, чтобы определить, какой X должен быть (мой изменился несколько раз с этого поста):
Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_x/")
- Загрузите Java с https://java.com/en/download/windows-64bit.jsp для 64-битных окон \ Установите его
- Загрузите комплект разработки Java по https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html для 64-битных окон \ установите его
- Затем щелкните правой кнопкой мыши значок "Этот компьютер" на рабочем столе \ Свойства \ Дополнительные параметры системы \ Дополнительно \ Переменные среды \ В разделе "Системные переменные" выберите "Путь" \ "Редактировать" \ "Создать" \ "Копировать" и вставьте пути "C:\Program Files\Java\jdk1"..8.0_201\bin "и" C:\Program Files\Java\jre1.8.0_201\bin "(без кавычек) \OK\OK\OK
Примечание: jdk1.8.0_201 и jre1.8.0_201 будут изменены в зависимости от версии комплекта разработки Java и Java
- В окне "Переменные среды" перейдите в раздел "Пользовательские переменные для пользователя". Нажмите "Создать" \ "Перевести имя переменной как" JAVA_HOME ", а значение переменной - как" C:\Program Files\Java\jdk1.8.0_201\bin "\ Нажмите" ОК ".
Чтобы проверить установку, откройте CMD\ Введите javac \ Нажмите Enter и введите java \ нажмите enter Появится
В RStudio запустить
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")
Примечание: jdk1.8.0_201 будет изменено в зависимости от версии комплекта разработки Java
Теперь вы можете без проблем установить и загрузить пакет rJava.
Так много ответов, и все же ничего не помогло мне - очень разочаровывает и расстраивает.
Время от времени я сталкиваюсь с этой проблемой и трачу время на Google.
Итак, вот что ДЕЙСТВИТЕЛЬНО сработало для меня, я на
Windows 10
, при этом все полностью обновлено.
- Я пошел сюда, чтобы скачать
JDK
а такжеJRE
8u301
, последняя версия на момент написания статьи.
Ссылка для скачивания Oracle Latest Java
Примечание. Мне пришлось создать учетную запись или войти в свою учетную запись — это не требует времени и бесплатна , не о чем беспокоиться. - Я установил JRE, а затем JDK, используя
exe
только что загруженный на предыдущем шаге. - В
Rstudio
(или вR
), я побежалSys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jdk1.8.0_301')
. - Бег
install.packages("rJava")
привели к желаемомуDONE (rJava)
. (конечно, я предполагаю, что у вас также естьRtools
установил, само собой...)
Довольно просто и легко имхо. С правильными шагами у меня ушло 3 мин.
Я решил проблему, удалив явно избыточное программное обеспечение Java с моей машины Windows 7 x64. Я достиг этого, сначала удалив все приложения Java, а затем установив свежую версию Java. (Позже я указал R 3.4.3 x86_64-w64-mingw32 на путь Java, просто чтобы упомянуть, хотя я не думаю, что это реальная проблема.) Сегодня осталась только Java 8 Update 161 (64-bit) 8.0.1610.12 затем. После этого, install.packages("rJava"); library(rJava)
работал отлично.
Это продолжение Обновления (июль 2018 года). Я на 64-битной Windows 10, но я настроен для сборки r пакетов из исходного кода для 32 и 64-битных с Rtools. Мой 64-битный jdk - это jdk-11.0.2. Когда я могу, я делаю все в RStudio. По состоянию на март 2019 года rjava протестирован с <=jdk11, см. Выпуск github # 157.
- Установите jdks в их расположение по умолчанию для каждого обновления (июль 2018 года) от @Jeroen.
- В R studio, установите JAVA_HOME на 64-битный JDK
Sys.setenv(JAVA_HOME="C:/Program Files/Java/jdk-11.0.2")
- При желании проверьте вашу переменную среды
Sys.getenv("JAVA_HOME")
- Установите пакет согласно рекомендации страницы github
install.packages("rJava",,"http://rforge.net")
К вашему сведению, консоль сценария rstudio не любит двойные запятые... но она работает!
Мне нужно иметь 32-битную JRE для моего браузера, но 64-битную JRE для R и rJava. 32-битная JRE установлена в папке по умолчанию. После некоторых экспериментов я обнаружил, что мне нужно только одно из предложений Мистерби, чтобы заставить rJava (версия 0.9-6) работать на меня. Все, что я сделал, это добавил путь к моей 64-битной установке Java:
C:\apps\Java\jre\bin\server\jvm.dll
в начало моей переменной окружения path (ваш путь, вероятно, будет другим) и удалите мой JAVA_HOME, как предложил user2161065. Я поставил это перед входом
C:\ProgramData\Oracle\Java\javapath
который установщик Oracle вставляет в начало пути и указывает на некоторые символические ссылки на 32-битную JRE. Добавив запись в 64-битную jvm.dll, похоже, rJava может найти то, что ему нужно.
Я думаю, что это обновление. Мне не удалось установить rJava (в Windows), пока я не установил JDK, так как Javac не найден и javac не работает в командной строке Windows. Сообщение, которое я получал, было
'javac' is not recognized as an internal or external command, operable program or batch file.
JDK включает в себя JRE и в соответствии с https://cran.r-project.org/web/packages/rJava/index.html текущей версией rJava (0.9-7, опубликованной 2015-Jul-29)
SystemRequirements: Java JDK 1.2 or higher (for JRI/REngine JDK 1.4 or higher), GNU make
Итак, вы: если rJava не будет установлен, потому что не может найти javac, и у вас установлена JRE, попробуйте JDK. Кроме того, убедитесь, что JAVA_HOME
указывает на JDK, а не JRE.