Использование пакета 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:TEMPRtmpW2eAUwdownloaded_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?


edit: только что опубликовано 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)"

10 ответов


Обновление (Июль 2018):

последняя версия CRAN rJava найдет jvm.dll автоматически, без ручной установки PATH или JAVA_HOME. Однако, обратите внимание, что:

  • чтобы использовать rJava в 32-битном R, вам нужно Java для Windows x86
  • чтобы использовать rJava в 64-битном R, вам нужно Java для Windows x64
  • построить или проверить пакеты R с multi-arch (the по умолчанию) вам нужно установить как Java для Windows x64 а также Java для Windows x86. На Win 64 первый устанавливается в C:\Program files\Java\ и последний в C:\Program Files (x86)\Java\ поэтому они не конфликтуют.

начиная с версии Java 9, поддержка x86 (win32) была прекращена. Следовательно, последняя рабочая настройка multi-arch заключается в установке обоих 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, мост RJava, будет нуждаться в jvm.dll, но R будет иметь проблемы с поиском этой DLL. Он находится в папке

C:\Program Files\Java\jdk1.6.0_25\jre\bin\server

или

C:\Program Files\Java\jre6\jre\bin\client

где бы вы ни находились, добавьте этот каталог в свой путь к windows переменная. (Windows - > "путь" - > "редактировать переменные среды для вашей учетной записи" - > путь - > изменить значение.)

возможно, у вас уже есть Java на вашем пути. Если это так, вы должны найти каталог клиент/сервер в том же Java "home" dir, что и тот, который уже находится на вашем пути.

чтобы быть в безопасности, убедитесь, что ваши архитектуры совпадают.Если у вас есть Java в Program Files, это 64-бит, поэтому вы должны запустить R64. Если у вас есть Java в Program Files (x86), это 32-бит, поэтому вы используете простой 32-бит Р.

повторно запустите R из меню Windows

если R работает, закройте.

из меню Пуск , запустите R / RGUI, RStudio. Это очень важно, чтобы сделать R забрать свой путь изменения.

установите 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 для работы сильно зависит от конфигурации вашего компьютера:

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

EDIT: если пакет имеет двоичные файлы, то они находятся в отдельных каталогах. Специфика будет зависеть от ОС. Обратите внимание, что ошибка 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="\"))

у меня были некоторые проблемы с определением пакета Java, который был установлен, когда я столкнулся с этой проблемой, так как предыдущие ответы точно не работали для меня. Чтобы разобраться, я набрал:

Sys.setenv(JAVA_HOME="C:/Program Files/Java/

а затем нажмите tab, и два предложенных каталога были " 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/")

у меня была связанная проблема с rJava. Он будет загружать, но пакет, который зависит от него, не будет загружаться.

пользователи могут тратить много времени на JVM.dll и путь и JAVA_HOME, когда реальное исправление заключается в том, чтобы заставить установщика просто забыть о i386. Используйте опцию для установки.пакеты. (это также работает, когда используется библиотека drat. (заслуга Дасона)

install.packages("SqlRender",INSTALL_opts="--no-multiarch")

кроме того, вы можете изменить только свой путь пользователя с помощью команды win следующим образом:

setx PATH "C:\Program Files\Java\jre1.8.0_102\bin\server;%PATH%"

мне нужно иметь 32-битную JRE для моего браузера, но 64-битную JRE для R и rJava. 32-разрядная JRE устанавливается в расположении по умолчанию. После некоторых экспериментов, я обнаружил, что мне нужен только один из misterbee это предложения, чтобы получить 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 текущая версия (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.


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