R과 함께 Win7 64 비트에서 rJava 패키지 사용


149

rJavaWin 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. rJavaR 64 비트에서 실행되지 않는 문제 입니까? 패키지가 64 개가 아닌 32 개인 지 어떻게 알 수 있습니까?


편집 : 방금 게시 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()질문 결과를 붙여 넣어 주 시겠습니까? rJava귀하의 질문에 설명 된 정확한 방법을 사용하여 64 비트 버전의 64 비트 버전을 설치했습니다 . 내 생각에 당신의 R 버전은 32 비트입니다.
Andrie

pls는 당신이 그것을 해결 한 방법을 공유합니다.
bigData

1
여기에 의견을 추가하면 전체 솔루션 목록을 검토하는 데 도움이 될 수 있습니다. 위의 오류가 발생하면 Java가 Program Files또는에 있는지 확인하십시오 Program Files (x86). 허용되는 대답에 따라 창에 경로를 추가하십시오. 인 경우 Program Files (x86)32 비트 버전을 의미하는 경우 sites.google.com/site/rforfishandwildlifegrads/home/week_2/… 링크를 따르십시오 .
Divi

답변:


154

업데이트 (2018 년 7 월) :

rJava의 최신 CRAN 버전은 또는 jvm.dll을 수동으로 설정하지 않고 자동으로 찾습니다 . 그러나 다음 사항에 유의하십시오.PATHJAVA_HOME

  • 32 비트 R에서 rJava를 사용하려면 Windows x86 용 Java 가 필요합니다.
  • 64 비트 R에서 rJava를 사용하려면 Windows x64 용 Java 가 필요합니다.
  • 멀티 아치 (기본값)와 빌드 또는 체크 R 패키지에 당신이 할 필요가 모두 설치 자바를 들어 윈도우 64을 뿐만 아니라 같은 윈도우 x86 용 자바 . Win 64에서 전자는 설치되고 C:\Program files\Java\후자는 C:\Program Files (x86)\Java\충돌하지 않습니다.

Java 버전 9부터 x86 (win32)에 대한 지원이 중단되었습니다. 따라서 최신 다중 계층 설정은 jdk-8u172-windows-i586.exejdk-8u172-windows-x64.exe 와 CRAN의 이진 패키지를 모두 설치하는 것입니다.

install.packages("rJava")

CRAN의 바이너리 패키지는 jvm 자체에서 선택해야합니다. 전문가 전용 : 소스에서 rJava를 빌드하려면 다음 --merge-multiarch플래그 가 필요합니다 .

install.packages('rJava', type = 'source', INSTALL_opts='--merge-multiarch')

오래된 답변 :

(참고 : 다른 답변 / 의견에있는 많은 사람들이 JAVA_HOME을 제거한다고 말 했으므로 이것을 고려하십시오. 아래의 모든 단계가 여전히 필요한지 최근 에이 문제를 다시 방문하지 않았습니다.)

다음은 Windows 7 64 비트에서 R + rJava를 시작하고 실행하는 방법에 대한 빠른 조언입니다. 몇 가지 가능성이 있지만 대부분 치명적인 결함이 있습니다. 다음은 나를 위해 일한 것입니다.

PATH에 jvm.dll 추가

R <-> Java 브릿지 인 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 PATH 변수에 추가하십시오. (Windows-> "경로"-> "계정에 대한 환경 변수 편집"-> PATH-> 값 편집)

PATH에 이미 Java가있을 수 있습니다. 그렇다면 클라이언트 / 서버 디렉토리는 이미 PATH에있는 것과 동일한 Java "홈"디렉토리에 있어야합니다.

안전을 위해 아키텍처가 일치하는지 확인하십시오. Java가있는 Program Files경우 64 비트이므로 R64를 실행해야합니다. 에 Java가있는 경우 Program Files (x86)32 비트이므로 일반 32 비트 R을 사용하십시오.

Windows 메뉴에서 R을 다시 시작하십시오.

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/').
Ken Williams

2
@ user2161065에 의해이 질문에 대해 지적한 바와 같이,로드 rJava는 JAVA_HOME 변수를 제거 필요
데이비드 LeBauer

1
이 모든이 필요할 수 있지만,이 I가 설정 JAVA_HOME에 있었다하더라도 수행 한 후 @ user2161065에 의해 제안
ajkl

3
+1 ...\jre\bin\server경로에 추가 나를 위해 고쳐
mchen

6
이 "Windows PATH"변수는 어디에서 찾을 수 있습니까?
Shreyes

114

rJava가 작동하도록하려면 컴퓨터 구성에 따라 크게 달라집니다.

  1. R 및 JDK / JRE 모두 동일한 32 비트 또는 64 비트 버전 을 사용해야합니다 . 이것의 혼합은 결코 작동하지 않을 것입니다 (적어도 나를 위해).
  2. 64 비트 버전 을 사용하는 경우 JAVA_HOME 을 환경 변수로 설정하지 마십시오 . 이 변수가 설정되면 rJava는 어떤 이유로 든 (적어도 나를 위해) 작동하지 않습니다. R 내에서 JAVA_HOME이 설정된 상태에서 쉽게 확인할 수 있습니다.

    Sys.getenv("JAVA_HOME")

JAVA_HOME을 설정해야하는 경우 (예 : maven 또는 기타 필요) rJava를로드하기 전에 다음 코드를 사용하여 R 세션 내에서 비활성화 할 수 있습니다.

if (Sys.getenv("JAVA_HOME")!="")
  Sys.setenv(JAVA_HOME="")
library(rJava)

이것은 대부분의 경우 트릭을 수행해야합니다. 또한 이것은 R과 함께 Win7 64 비트에서 rJava 패키지 사용 문제를 해결합니다. R 에서 환경 변수를 설정 해제한다는 아이디어를 빌 렸습니다 . rJava 패키지 설치 실패 .


20
JAVA_HOME을 제거 할 때까지 이전 솔루션이 작동하지 않았습니다. 이것이 핵심입니다.
bshor

15
이 JAVA_HOME 문제는 rJava에 버그로보고되어야합니다.
Apprentice Queue

2
이것은 정말 나를 위해 트릭을했다 : if (Sys.getenv ( "JAVA_HOME")! = "") Sys.setenv (JAVA_HOME = "") library (rJava) 감사합니다 @ user2161065
ajkl

JAVA_HOME var를 제거하기 위해 해당 스크립트를 추가하면 나를 위해 일했습니다!
Richard

1
이 솔루션은 rJava에 의존하는 XLConnect 및 XLConnectJar와 같은 패키지에서도 작동합니다. (검색 엔진이 내가
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 env 변수를 대체하고 R에서 설정에 +1
carnust

내 JAVA_HOME은 JDK 폴더로 설정되었으며 (Java 개발도 마찬가지 임) rJava에는 없었습니다. 잘 작동하는 Java 개발 환경을 망설이지 않기 때문에 마지막 수정 (옵션)을 사용했습니다. 감사!
chaslewis

1
options(java.home="my\\path\\to\\jre")환경 경로 설정을 포함한 다른 모든 것이 실패했을 때
Daniel Krizian

이것은 나를 위해 일했다 : options(java.home="C:\\Program Files\\Java\\jdk1.8.0_144\\jre"). jdk1.8이있는 경우.
saubhik

Adopt Open JDK를 사용하면 최종 제안이 효과적이었습니다. 다른 모든 인기있는 솔루션은 실패했습니다.
Ola Caster

7

마지막 질문에는 쉬운 대답이 있습니다.

> .Machine$sizeof.pointer
[1] 8

R64를 실행 중임을 의미합니다. 32 비트 R을 실행 중이면 4를 반환합니다. 64 비트 OS를 실행한다고해서 64 비트 R을 실행한다는 의미는 아니며 오류 메시지에서 그렇지 않은 것으로 나타납니다.

편집 : 패키지에 바이너리가있는 경우 별도의 디렉토리에 있습니다. 구체적인 내용은 OS에 따라 다릅니다. ...rJava/libs/x64/... 내 MacOS 시스템에서 ... rJava / libs / ...`폴더에 3 개의 하위 디렉토리 인 i386, ppc 및 x86_64 가있는 LoadLibrary 오류가 발생했습니다 . (ppc 파일은 분명히 쓸모없는 수하물입니다.)


RStudio 설치가 64 비트 R을 가리 켰습니다. 32 비트로 변경했을 때 rJava패키지를 가져올 수있었습니다 . 그렇기 때문에 오류 메시지에 대해 혼란스러워하는 이유는 현재 진행중인 작업과 정반대입니다.
djq

4

네크로 죄송합니다. 나는 같은 문제 에 부딪 쳤고 JRE를 가리키는 rJava것으로 나타났습니다 JAVA_HOME. JDK를 설치했다면 아마도 JAVA_HOMEJDK를 가리킬 것입니다 . 나의 빠른 해결책 :

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와 관련된 문제가있었습니다. 그것은로드하지만 그것에 의존하는 패키지는로드되지 않습니다.

실제 수정 프로그램이 설치 프로그램이 i386을 잊어 버리도록 강제하는 경우 사용자는 jvm.dll 및 PATH 및 JAVA_HOME으로 많은 시간을 낭비 할 수 있습니다. 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를 사용할 수 있어야하지만 R 및 rJava에는 64 비트 JRE가 있어야합니다. 32 비트 JRE는 기본 위치에 설치됩니다. 몇 가지 실험 후, rJava (버전 0.9-6 )가 나를 위해 작동 하도록 misterbee의 제안 중 하나만 필요하다는 것을 알았 습니다. 64 비트 Java 설치 경로를 추가하기 만하면됩니다.

C:\apps\Java\jre\bin\server\jvm.dll

내 경로 환경 변수 맨 위에 (경로가 다를 수 있음) user2161065가 제안한 대로 JAVA_HOME을 제거하십시오 . 나는 엔트리 바로 앞에 이것을 넣어

C:\ProgramData\Oracle\Java\javapath

Oracle 설치 프로그램이 경로 맨 위에 삽입하고 32 비트 JRE에 대한 일부 심볼릭 링크를 가리 킵니다. 64 비트 jvm.dll에 항목을 추가하면 rJava가 필요한 것을 찾을 수있는 것처럼 보입니다.


0

이것이 업데이트라고 생각합니다. Javac를 찾을 수 없고 javac가 Windows 명령 프롬프트에서 작동 하지 않기 때문에 JDK를 설치할 때까지 rJava (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-Jul-29)

SystemRequirements:     Java JDK 1.2 or higher (for JRI/REngine JDK 1.4 or higher), GNU make

javar을 찾을 수 없어서 rJava가 설치되지 않고 JRE가 설치되어 있으면 JDK를 사용해보십시오. 또한 JAVA_HOMEJRE가 아닌 JDK 를 가리키는 지 확인하십시오 .


나는 이것이 기본적으로 @friendzis가 말한 것과 반대되는 것을 알았습니다.
woodvi

rJava 개발자가이 문제를 명확하게 설명 할 수 있습니까? pls
userJT

0

내 Windows 7 x64 시스템에서 중복 Java 소프트웨어제거 하여 문제를 해결했습니다 . 먼저 모든 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 년 7 월)의 후속 조치입니다. 64 비트 Windows 10을 사용하고 있지만 Rtools를 사용하여 소스에서 r 패키지를 32 및 64 비트로 빌드하도록 설정되었습니다. 내 64 비트 jdk는 jdk-11.0.2입니다. 가능하면 RStudio에서 모든 작업을 수행합니다. 2019 년 3 월 현재 rjava는 <= jdk11로 테스트되었습니다 ( github issue # 157 참조) .

  • @Jeroen의 업데이트 (2018 년 7 월) 당 기본 위치에 jdk를 설치하십시오.
  • R studio에서 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")

참고로, rstudio 스크립팅 콘솔은 이중 쉼표를 좋아하지 않지만 작동합니다!


0
  1. 64 비트 Windows 용 https://java.com/en/download/windows-64bit.jsp 에서 Java를 다운로드 하십시오. \ 설치
  2. 64 비트 Windows 용 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 에서 Java 개발 키트를 다운로드 하십시오. \ install it
  3. 그런 다음 바탕 화면 \ 속성 \ 고급 시스템 설정 \ 고급 \ 환경 변수 \ 시스템 변수에서 "이 PC"아이콘을 마우스 오른쪽 단추로 클릭하십시오. 경로 \ 편집을 클릭하십시오. 새 \ 복사를 클릭하십시오. 경로를 클릭하십시오. "C : \ Program Files \ Java \ jdk1 .8.0_201 \ bin”및 "C : \ Program Files \ Java \ jre1.8.0_201 \ bin"(인용없이) \ OK \ OK \ OK

참고 : jdk1.8.0_201 및 jre1.8.0_201은 Java 개발 키트 및 Java 버전에 따라 변경됩니다.

  1. 환경 변수 창에서 User \에 대한 사용자 변수로 이동하십시오. New \ Put 변수 이름을 "JAVA_HOME"으로 클릭하고 변수 값을 "C : \ Program Files \ Java \ jdk1.8.0_201 \ bin"\ OK를 누르십시오.

설치를 확인하려면 CMD \ Type javac \ Press Enter를 열고 java \ press enter를 입력하십시오. 여기에 이미지 설명을 입력하십시오

RStudio에서

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

참고 : jdk1.8.0_201은 Java 개발 키트 버전에 따라 변경됩니다.

이제 아무 문제없이 rJava 패키지를 설치하고로드 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.