Використання пакету rJava на Win7 64 біт з R


149

Я намагаюся встановити 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штрафом. Чи проблема лише в тому, що 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)"

Чи можете ви вставити результати R.Version()свого запитання? Щойно я встановив 64-бітну версію, rJavaвикористовуючи точний метод, який ви описуєте у своєму запитанні. Я здогадуюсь, що ваша версія R - 32-бітна.
Андрі

pls поділіться вашими ans як ви вирішили це.
bigData

1
Додавання сюди коментаря, оскільки це може допомогти комусь із завдання пройти весь список рішення. Якщо ви отримаєте вищевказану помилку, перевірте , якщо ваша Java в Program Filesабо Program Files (x86). Додайте шлях до вікон, як говорить прийнята відповідь. Якщо Program Files (x86)це означає, що у вас є 32-розрядна версія, перейдіть за посиланням sites.google.com/site/rforfishandwildlifegrads/home/week_2/… .
Діві

Відповіді:


154

Оновлення (липень 2018 року):

Остання версія CRAN rJava знайдеться 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\тому, що вони не конфліктують.

Станом на версію 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 до вашої PATH

rJava, міст R <-> Java, знадобиться jvm.dll, але R матиме проблеми з пошуку цієї DLL. Він знаходиться в папці типу

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

або

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

Де б ви не були, додайте цей каталог до змінної Windows PATH. (Windows -> "Шлях" -> "Редагувати змінні середовища для вашого облікового запису" -> PATH -> редагувати значення.)

Можливо, у вас вже є Java на вашому PATH. Якщо це так, ви повинні знайти каталог клієнта / сервера у тому ж режимі Java "home", що і у вашому 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 встановити пакунок у каталозі первинної бібліотеки. З якоїсь причини залишити значення порожнім не працює, навіть якщо воно має бути за замовчуванням.


4
Замість того, щоб залишати другий аргумент порожнім, ви можете просто зробити install.packages('rJava', repos='http://www.rforge.net/').
Кен Вільямс

2
Як було зазначено у відповіді @ user2161065, для завантаження rJava потрібно видалити змінну JAVA_HOME
Девід Лебоуер

1
Хоча все це може знадобитися, навіть після цього мені довелося зняти JAVA_HOME згідно з пропозицією @ user2161065
ajkl

3
+1 Додавання ...\jre\bin\serverдо шляху фіксованою це для мене
mchen

6
Де ми можемо знайти цю змінну "Windows PATH"?
Шрейес

114

Робота rJava в значній мірі залежить від конфігурації комп'ютера:

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


20
Попередні рішення не спрацювали, поки я не позбувся JAVA_HOME. Це ключове.
bshor

15
Про цю проблему JAVA_HOME слід повідомити rJava як помилку.
Черга учень

2
Це справді зробило для мене хитрість: якщо (Sys.getenv ("JAVA_HOME")! = "") Бібліотека Sys.setenv (JAVA_HOME = "") (rJava) Спасибі @ user2161065
ajkl

додавши, що скрипт для видалення вару JAVA_HOME працював на мене!
Річард

1
Це рішення також працює для таких пакетів, як XLConnect та XLConnectJars, які залежать від rJava. (Я пишу цей очевидний коментар, щоб пошукові системи могли знайти цю сторінку легше, ніж проблеми, які я мав знайти.)
Tripartio

31

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

2

Мій JAVA_HOME був встановлений у папку JDK (як і я розробляю Java), і у rJava його не було. Я використав ваш останній виправлення (варіанти), оскільки я не хочу возитися з добре працюючою середовищем Java-розробників. Дякую!
chaslewis

1
options(java.home="my\\path\\to\\jre")працювали, коли все інше не вдалося, включаючи налаштування середовища PATH
Даніель Кризіян

Це працює для мене: options(java.home="C:\\Program Files\\Java\\jdk1.8.0_144\\jre"). Якщо у вас jdk1.8.
saubhik

Використовуючи Adopt Open JDK, ця остання пропозиція спрацювала для мене. Усі інші популярні рішення не вдалися.
Ола Кастер

7

Останнє питання має просту відповідь:

> .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, очевидно, марний багаж.)


Моя установка RStudio вказувала на 64-бітний Р. Коли я змінив її на 32-бітну, я міг імпортувати rJavaпакет. Ось чому я настільки розгублений щодо повідомлення про помилку, оскільки, здається, якраз протилежний тому, що відбувається.
djq

4

Вибачте за некроз. Я занадто стикався з тим самим питанням і з’ясував, що rJavaочікує, JAVA_HOMEщо вкаже на JRE. Якщо у вас встановлений JDK, швидше за все, ваші JAVA_HOMEпункти на JDK. Моє швидке рішення:

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

3

У мене виникли проблеми з визначенням пакета 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 Сподіваюся, це допомагає комусь іншому.

Оновлення:

Перевірте свою версію, щоб визначити, яким має бути X (мій змінився декілька разів з часу публікації):

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

3

У мене була пов'язана проблема з 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%"

0

Мені потрібно мати 32-розрядний JRE для мого браузера, але 64 бітний JRE для R та rJava. 32-бітний JRE встановлений у стандартному розташуванні. Після кількох експериментів я виявив, що мені потрібна лише одна пропозиція господині, щоб 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 зможе знайти те, що йому потрібно.


0

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

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.


Я помічаю, що це в основному протилежне тому, що сказав @friendzis.
woodvi

Чи може розробник rJava внести певну ясність у цю проблему, pls
користувачJT

0

Я вирішив цю проблему, видаливши, очевидно, зайве програмне забезпечення 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)справді спрацював ідеально.


0

Це продовження оновлення (липень 2018 року). Я перебуваю на 64-розрядному Windows 10, але я налаштований на створення пакетів r із джерела для 32 та 64-бітних з Rtools. Мій 64-бітний jdk - jdk-11.0.2. Коли я можу, я все роблю в RStudio. Станом на березень 2019 року rjava тестується на <= jdk11, див. Випуск github №157 .

  • Встановіть jdks у їх місце за замовчуванням за оновлення (липень 2018 року) від @Jeroen.
  • У студії R встановіть 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")

FYI, консоль сценарію rstudio не любить подвійних коми ... але це працює!


0
  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-розрядних windows \ встановіть його
  3. Потім клацніть правою кнопкою миші на піктограмі «Цей ПК» на робочому столі \ Властивості \ Розширені налаштування системи \ Розширені \ Змінні середовища \ У розділі Системні змінні виберіть Шлях \ Клацніть Редагувати \ Клацніть на Нове \ Скопіюйте та вставте контури "C: \ Program Files \ Java \ jdk1 .8.0_201 \ bin "та" C: \ програмні файли \ Java \ jre1.8.0_201 \ bin "(без лапок) \ OK \ OK \ OK

Примітка: jdk1.8.0_201 та jre1.8.0_201 будуть змінені залежно від версії Java Development Kit та Java

  1. У вікні змінних довкілля перейдіть до змінних користувача для користувача \ натисніть кнопку Створити \ Поставте ім'я змінної як "JAVA_HOME" та значення змінної як "C: \ Файли програми \ Java \ jdk1.8.0_201 \ bin" \ Натисніть OK

Щоб перевірити встановлення, відкрийте CMD \ Type javac \ Натисніть Enter та Введіть java \ натисніть Enter введіть тут опис зображення

В RStudio запустити

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.