Использование пакета 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?
редактировать: только что опубликовано 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 с несколькими арками (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')
старый anwser:
(Примечание: многие из людей в других ответах/комментариях сказали удалить 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 для работы сильно зависит от конфигурации вашего компьютера:
- вы должны используйте то же самое 32-битная или 64-битная версия для обоих: 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 на Win7 64 бит с 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. (кредит идет к Dason)
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 as 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)
работал отлично.