Использование пакета 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 fine. Проблема в том, что 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)"

Ответ 1

Обновление (июль 2018 года):

Последняя версия rJava для jvm.dll автоматически найдет 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\ 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 установить пакет в директорию первичной библиотеки. По какой-то причине оставить значение пустым не получится, даже если оно по умолчанию.

Ответ 2

Получение работы rJava в значительной степени зависит от конфигурации вашего компьютера:

  • Вы должны использовать ту же самую 32-битную или 64-битную версию для: R и JDK/JRE. Смесь этого никогда не будет работать (по крайней мере для меня).
  • Если вы используете 64-битную версию, убедитесь, что вы не задаете JAVA_HOME как переменную enviorment. Если эта переменная установлена, 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 на Win7 64 бит с R тоже. Я заимствовал идею отменить переменную окружения из R: установка пакета rJava не работает.

Ответ 3

Для меня настройка 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)

Ответ 4

Последний вопрос имеет простой ответ:

> .Machine$sizeof.pointer
[1] 8

Значение Я запускаю R64. Если бы я работал 32 бит R, он возвращался бы 4. Просто потому, что вы используете 64-битную ОС, это не значит, что вы будете запускать 64-битное R, а из сообщения об ошибке это не так.

EDIT: если пакет имеет двоичные файлы, то они находятся в отдельных каталогах. Специфика будет зависеть от ОС. Обратите внимание, что ваша ошибка LoadLibrary возникла, когда она попыталась найти dll в ...rJava/libs/x64/... В моей системе MacOS папка... rJava/libs/... `имеет 3 подкаталога: i386, ppc и x86_64. (Файлы ppc - бесполезный багаж.)

Ответ 5

Извините за некро. Я тоже столкнулся с той же проблемой и обнаружил, что rJava ожидает, что JAVA_HOME укажет на JRE. Если у вас установлен JDK, скорее всего ваш JAVA_HOME указывает на JDK. Мое быстрое решение:

Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="\\"))

Ответ 6

У меня возникли проблемы с определением пакета 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. Надеюсь, это поможет кому-то другому.

Update:

Проверьте свою версию, чтобы определить, что должно быть X (моя минута несколько раз с этого поста):

Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_x/")

Ответ 7

У меня была связанная с 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%"

Ответ 8

Мне нужно иметь 32-битную JRE для моего браузера, но 64 бит JRE для R и rJava. 32-разрядная JRE установлена ​​в местоположении по умолчанию. После некоторых экспериментов я обнаружил, что мне нужен только один из предложений misterbee, чтобы получить для меня rJava (версия 0.9-6). Все, что я сделал, это добавить путь к моей 64-битной установке Java:

C:\apps\Java\jre\bin\server\jvm.dll

в верхней части моей переменной окружения пути (ваш путь, скорее всего, будет другим) и удалить мой JAVA_HOME в качестве user2161065. Я поставил это перед входом

C:\ProgramData\Oracle\Java\javapath

который инсталлятор Oracle вставляет в начало пути и указывает на некоторые символические ссылки на 32-битную JRE. Добавив запись в 64-битную jvm.dll, выглядит так: rJava может найти то, что ей нужно.

Ответ 9

Я думаю, что это обновление. Мне не удалось установить 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 текущая версия (0.9-7, опубликованная с 2015 года по 29 июля) rJava

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.

Ответ 10

Я решил проблему удалить явно избыточное программное обеспечение Java с моей машины Windows 7 x64. Я достиг этого, сначала удалив все приложения Java и , затем установив новую версию Java. (Позже я указал R 3.4.3 x86_64-w64-mingw32 на путь Java, просто чтобы упомянуть, хотя я не думаю, что это была настоящая проблема.) Сегодня только Затем было оставлено сообщение об обновлении версии 8.164 (64-разрядная версия) 8.0.1610.12. После этого install.packages("rJava"); library(rJava) работал отлично.

Ответ 11

  1. Загрузите Java с https://java.com/en/download/windows-64bit.jsp для 64-битных окон\Установите его
  2. Загрузите комплект разработки Java по адресу https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html для 64-разрядных окон\установите его
  3. Затем щелкните правой кнопкой мыши значок "Этот компьютер" на рабочем столе\Свойства\Дополнительные параметры системы\Дополнительно\Переменные среды\В разделе "Системные переменные" выберите "Путь"\"Изменить"\"Создать"\"Копировать и вставить пути" "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

  1. В окне "Переменные среды" перейдите в раздел "Пользовательские переменные для пользователя". Нажмите "Создать"\"Перевести имя переменной как" JAVA_HOME ", а значение переменной -" C:\Program Files\Java\jdk1.8.0_201\bin "\. Нажмите" ОК ".

Чтобы проверить установку, откройте CMD\Введите javac\Нажмите Enter и введите java\нажмите enter Появится сообщение enter image description here

В RStudio запустить

Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")

Примечание: jdk1.8.0_201 будет изменено в зависимости от версии комплекта разработки Java

Теперь вы можете без проблем установить и загрузить пакет rJava.

Ответ 12

Это продолжение Обновления (июль 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 не любит двойные запятые... но она работает!