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

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

  1. вы должны используйте то же самое 32-битная или 64-битная версия для обоих: 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 на 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) работал отлично.