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

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)"



답변

업데이트 (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에게 기본 라이브러리 디렉토리에 패키지를 설치하도록 지시합니다. 어떤 이유로 든 기본값을 비워 두더라도 값을 비워두면 작동하지 않습니다.


답변

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 패키지 설치 실패 .


답변

저에게 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 비트 OS를 실행한다고해서 64 비트 R을 실행한다는 의미는 아니며 오류 메시지에서 그렇지 않은 것으로 나타납니다.

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


답변

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

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


답변

이전 답변이 정확하게 작동하지 않았기 때문에이 문제가 발생했을 때 설치된 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/")


답변

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%"