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