OSX Yosemite로 "업그레이드"한 후 RStudio / R의 rJava로드 오류


122

저는 최근에 OSX Mountain Lion에서 Yosemite로, R 3.1.3에서 3.2로 "업그레이드"했습니다. 업그레이드 직후 R 또는 RStudio를 열었을 때 Java 6을 설치해야한다는 팝업 메시지가 표시되었습니다. 또한 rJavarJava (예 :)에 의존하는 패키지를 로드 하거나 로드 하면 xlsxRStudio가 충돌 (R도 충돌 함) R.app직접 열어서 시도했을 때 ).

Stack Overflow 및 다른 곳에서 발견 된 몇 가지 수정 사항을 시도한 후 (자세한 내용은 아래 참조),로드 rJava또는 종속 된 패키지가 rJava더 이상 R을 충돌시키지 않지만 다음 오류가 발생 하는 시점에 있습니다 .

library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so
  Reason: image not found
Error: package or namespace load failed for rJava

그러나 명령 줄에서 R을 호출 한 다음로드 rJava또는rJava 하면 작동하는 것 같습니다 (또는 적어도 오류 메시지가 표시되지 않음).

여러 가지 시도한 수정 사항을 시도해 보았습니다. 그 중 일부는 몇 번이고 제가 어떤 순서로 무엇을했는지 정확히 기억할 수 없습니다 (이것이 그런 끔찍한 일이 될 것이라는 것을 깨닫지 못했으며 실제로 추적하지 못했습니다) ,하지만 그 요점은 다음과 같습니다.

  • .bash_profile( 이 SO 답변에 따라 ) 다음을 추가했습니다 .

    export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
    export LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / server

  • 다음과 같이 명령 줄에서 java를 재구성했습니다.

    sudo R CMD javareconf -n

  • options("java.home")이것이로 설정되어 있는지 확인 하고 발견했습니다 NULL. 나는 그것을 다음과 같이 설정하려고 시도했다 ( 이 질문에 따라 ).

    options ( "java.home"= "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre")

  • 최신 Java Development Kit를 설치 rJava하고 소스에서 다시 설치 했습니다 (어디에서 찾았는지 기억할 수 없음).

이 모든 것을 시도하는 동안 어떤 시점에서 rJavaR을 충돌시키지 않고 로드 할 수 있었지만 대신 위에 게시 된 오류 메시지를 받았습니다. 또한 RStudio를 종료하면 정상적으로 종료 된 것처럼 보이지만 "RStudio가 예기치 않게 종료되었습니다"라는 메시지가 나타나 프로그램을 종료하는 동안 충돌이 발생했음을 나타냅니다.

옵션이 부족한 것 같아 마침내 OS X 2014-001 (Java 6) 용 Java 를 설치하기로 결정했습니다 . 이제 R 또는 RStudio를 열었을 때 "이 소프트웨어에는 Java 6이 필요합니다."라는 팝업 메시지가 더 이상 나타나지 않습니다. 그러나 나는 여전히.onLoad failed in loadNamespace() for 'rJava' 위에 게시 된 오류 메시지가 나타납니다.

이미 살펴본 게시물 중 일부를 검토하면서 이전에 놓친 또 다른 SO 답변 을 발견했습니다. RStudio에 올바른 Java 경로를 제공하는 다음 명령 줄 코드로 RStudio를 열 것을 권장했습니다.

LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server : open -a RStudio

그러면 RStudio 창이 열리고 rJava오류없이 여기에 의존 하는로드 및 패키징 도 가능했습니다 .

마지막으로 명령 줄에서 R을 실행 해 보았습니다 (이전에 해본 적이 없음). 명령 줄,로드 rJava또는 종속 된 패키지에서rJava 작업에 오류를 발생시키지 않는 .

그래서 이제 얻을 수 있습니다 rJava 명령 줄에서 RStudio에 자바 경로를 제공하는 코드를 사용하여 RStudio를 열면 작업을 (위에서 언급 한대로). 그러나 명령 줄 kludge 없이도 일반적인 Mac 방식으로 RStudio를 열 수 있도록 근본적인 문제를 해결하는 방법을 찾고 싶습니다. 또한 이전 버전의 Java가 설치되어 있으면 문제가 발생할 수 있다는 점도 우려됩니다.

누구든지이 문제를 진단하고 해결하는 방법에 대한 아이디어가 있습니까?


이 솔루션이 El Capitan에서 여전히 작동합니까? LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio트릭을 사용하기 전에 작동 했지만 더 이상 작동하지 않습니다. 나는 한 이 문제에 대한 블로그 포스트를 작성 하고이이 문제를 설명했다. 이 구성에서 다른 사람들 도이 문제를 경험하는지 또는 그것이 내 잘못인지 궁금합니다.
Paul Klemm 2015

아직을 사용 Yosemite하고 있으므로 잘 모르겠습니다. 관련 답변은 아래를 참조하십시오 El Capitan.
eipi10 2015

네, 그럼 새 질문을 올릴 것 같아요. 예 El Capitan아래 솔루션은 예상 대로 RStudio로드 rJava되는 즉시 도움이됩니다 .
Paul Klemm

2
RStudio를 다시 시작한 후에 작동했습니다.
Pranay Aryal 2016

진단시 otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so 공유 라이브러리 목록과 해결 방법을 얻으십시오. 의 런타임 내용을 검색하는 방법을 모르겠습니다 @rpath.
Dave X

답변:


279

나는 같은 문제가 있었고 당신과 같은 단계를 거쳤습니다. Finder / Spotlight를 통해 RStudio를 시작하는 마지막 단계는 libjvm.dylib를 / usr / local / lib에 연결하는 것입니다.

sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

-f 기존 파일 / 링크를 강제로 덮어 쓰기 위해 플래그가 추가됨


4
El Capitan에서 Sierra로 업그레이드 할 때 동일한 문제를 수정했습니다. +1
Murta 16. 9.

2
이것은 많은 문제를 해결했습니다. 특히 원래 오류가 cannot jfindclass[[1]]rJava 및 JDBC 드라이버에서 올 수있는 경우
Jenks

1
Macbook Pro에서 Java를 업데이트 할 때마다이 명령을 실행해야합니다. 아직 맥 OS 시에라 10.12.5 자바 버전 8 업데이트 (141)에서 작동
thiagoveloso

11
이것은 거의 나를 위해 일했습니다. 또한 /usr/local/lib/libjvm.dylib/ usr / local / lib /가 @rpath에없는 것 같기 때문에 R 프레임 워크의 심볼릭 링크를 파일에 추가해야했습니다. 예 :ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
Dave X

1
유용한 정보가 될 수 있습니다. github.com/snowflakedb/dplyr-snowflakedb/wiki/…
user2079550

53

OSX El Capitan 10.11에서 사용자는 / usr / lib에 쓸 권한이 없습니다. 따라서 대신 다음 명령을 사용하십시오.

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

29

다음과 같이 실행하여 libjvm.dylib를 명시 적으로로드 할 수 있습니다.

dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)

확실히 가능하지만 편리하지는 않습니다. 허용되는 대답은 아마도 더 나은 선택 일 것입니다. +1그래도 대안을 제공하기 위해.
thiagoveloso

27

macOS High Sierra (10.13.1) 및 Java 버전 9에서는 약간 다른 JVM 경로를 사용해야합니다 ( jre이전 Java 버전의 지침과 비교하여 경로에서 누락 된 폴더에 유의).

sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib

또한 JVM에 대해 R에게 알려야합니다.

MY_R_VERSION=$(Rscript -e "cat(with(R.version, sprintf('%s.%s', major, substring(minor, 1, 1))))")
ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/$MY_R_VERSION/Resources/lib/

대박. 작동했습니다! El Capitan에 대한 제안이 Sierra에서 작동하지 않는 것으로 나타남
KarthikS

감사합니다. 이것은 저에게도 효과적이었습니다. macOS High Sierra 10.13.2
pat_krat

이것은 나를 도왔다. 알림 R 부분을하지 않았습니다. 여전히 작동했습니다. 고마워요 :)
Harish

17

다음 명령이 작동합니다.

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

그 후 RStudio에서 rJava로드는 "xlsx"패키지로드를 통해 작동합니다.

library("xlsx")

PS # 1 환경 : Mac OS X El Capitan 10.11.3+ 및 RStudio 0.99.491+ 및 R 3.2.3+. (이제 macOS Sierra (10.12) 및 R.3.3.1에서도 테스트했습니다.)

추신 # 2 나는 그것이 openxlsx훨씬 더 빠르며 작동하기 위해 Java에 의존하지 않는다는 것을 알았습니다. 그래서 지금은 그 패키지를 사용하고 있습니다. 다른 사람들에게 도움이되기를 바랍니다.


1
내 친구 고마워요, 당신은 내 하루를 구했습니다. 나는 다른 해결책으로 시도했지만 이것이 내 문제를 해결 한 것입니다.
Matteo De Felice 2011 년

1
감사의 표를받은 다른 El Cap 사용자 (MacGUI 사용). 가장 간단 해 보였고 (자바 런타임 1.6을 설치하기위한 이전의 노력으로는 문제가 해결되지 않았기 때문에) 처음부터 이것을 시도했으며 pkg : rJava 및 종속성 pkg; XLConnect로 즉각적인 성공을 거두었습니다. Oracle에서 사용 가능하고 Apple 페이지에서 링크 된 레거시 Java 1.6을 설치해야 할 수 있습니다.
IRTFM

1
안녕하세요, 귀하의 조언은 MacOS High Sierra에서도 작동합니다. 감사합니다!
user8193079

1
openxlsxFTW!
iled

예! @iled : 동의 openxlsx합니다. 어쨌든 더 잘 사용 합니다.
Sander W. van der Laan

7

당신은 다시 컴파일 할 필요없이 크랑 rJava을 사용할 수 있어야 rJava을 하거나 R 프레임 워크 라이브러리 디렉토리에 공유 라이브러리를 연결하여 추가 단계를 수행하십시오.

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries

6

다음은 Mac OS X El Capitan (10.11.6)을 실행하는 두 대의 Mac에서 제대로 작동하도록 구성한 방법입니다.

  1. 터미널 창에서 다음 명령을 실행하여 'rJava'를 제거하십시오.

    Rscript -e 'remove.packages("rJava")'
    sudo Rscript -e 'remove.packages("rJava")'
  2. Oracle에서 Java 소프트웨어를 다운로드하고 설치합니다. https://www.java.com/en/download/mac_download.jsp

  3. /Users/<userid>/.bashrc선호하는 편집기 를 사용 하려면 다음 행을 추가하십시오 .

    # Set JAVA_HOME so rJava package can find it
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
  4. 터미널, R 및 RStudio 창을 닫고 다시 시작합니다 (에 대한 변경 사항 적용 .bashrc).

  5. 터미널 창에서 다음 명령을 실행하십시오.

    sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  6. 터미널 창에서 다음 명령을 실행하십시오.

    sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'

이것을 따르는 동안 licuuc 라이브러리 / 링커 오류가 발생합니다. 설명 할 수 있습니까? macOS Sierra에 설치하려고합니다. 자세한 내용은 여기 (El Capitan의 이전 버전)를 참조 하십시오 .
hhh

5

이를위한 쉬운 단계는 다음과 같습니다.

  1. rJava 패키지 제거 : remove.packages (rJava)
  2. 닫기 R
  3. Mac에 최신 Java 설치
  4. 터미널을 열고 다음 명령을 입력하십시오. sudo R CMD javareconf
  5. R을 열고 다음 명령으로 rJava를 설치합니다.

    install.packages ( "rJava", dependencies = TRUE, type = "source")


여기에 가기 전에 실제로 이것을했습니다. 내 rjava 종속 라이브러리가 설치되었지만 시작되지 않았습니다. 연결libjvm.dylib로의/usr/local/lib 도 시작되었습니다 :)
jonalv

3

이미지를 찾을 수 없음 문제는 최신 Java SE 10 JDK를 사용하는 OSX High Sierra에 새로 설치하는 경우 발생합니다.

rJava Github 문제 페이지에있는 수정 사항을 사용하여 rJava의 경로 문제를 해결할 수있었습니다. https://github.com/su/rJava/issues/78)

R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Headers


1

MAC에서 나를 위해 일한 것은 다음과 같습니다.

  1. 귀하의 ~/.profile또는~/.bashrc 이 줄을 추가합니다 : %export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

    1.1 % source .profile(또는 % source .bashrc)

  2. % sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  3. remove.packages(rJava)
  4. remove.packages(Rweka)
  5. 터미널에서 다음 명령을 입력하십시오. %sudo R CMD javareconf
  6. install.packages("rJava", dependencies = TRUE, type = "source")
  7. install.packages("rJava", dependencies = TRUE, type = "source")
  8. 로드 library("rJava", "RWeka")

행운을 빕니다.


1

파일 시스템을 건드리지 않는 또 다른 간단한 대답 :

$ install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so

( jdk1.8.0_131.jdkJDK 경로로 대체 하십시오.)


2
나는 homebrew R을 가지고 있으며 나를 위해 일한 정확한 명령은 install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/server /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so. 나는 rpath가 누락 된 것을 볼 수있었습니다otool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Ian

@Ian 아마도 Homebrew와 함께 Java를 설치하고 이제 rJava를 작동시키려는 여기에 대한 해결책을 알고있을 것 입니다. 아이디어?
hhh

1

libjvm.dylib 파일의 위치를 ​​확인하십시오.

제 경우에는 이것을 시도하십시오.

dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)

1

찾을 수있는 모든 문제 해결을 수행 한 다음 jdk-11.0.1_osx-x64_bin.dmg를 다음 위치에서 설치했습니다. Oracle 다운로드

그 후 모든 것이 완벽하게 작동했습니다.

라이브러리 ( 'rJava') 실행시로드되지 않은 라이브러리의 버전을 확인하고 설치해야하는 Java 버전과 일치시킵니다.


1

Rstudio에서로드하는 동안 'rJava'가 JDK 버전에 대해 매우 엄격하다는 것을 알았습니다.
필자의 경우 (Mac OS. 10.14.6-Mojave) jdk-11에 대해 테스트 된 jdk-13을 설치했습니다.
내 JDK 버전을 Rstudio (JDK 11)에서 유효하다고 가정 한 존재하지 않는 디렉토리에 연결했습니다.

sudo ln -sf /Library/Java/JavaVirtualMachines/jdk-13.jdk/ /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk

그리고
놀랍게도 매력처럼 작동합니다 ... BTW., 네이티브 R에서 이전 지침에 따라 'rJava'를 실행하는 데 문제가 없었습니다.



0

아래의이 줄 rJava은이 토론의 다른 사람들이했던 것과 같은 패키지 문제를 해결했습니다 . 나는이 문제에 대한 해결책이 하나 이상이라고 확신하며, 때때로 아래의 것과 같은 한 줄이 쓰레기로가는 시간을 많이 절약하기 때문에 그들의 기여에 대해 진심으로 감사드립니다!

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

0

명령 줄에서 다음을 실행합니다. sudo R CMD javareconf

위의 여러 솔루션에서 이에 대해 언급했지만 rJava패키지를 제거한 후 다시 설치하는 것도 제안 합니다. 추가 단계가 불필요하다는 것을 알았습니다.


솔루션을 시도 sudo R CMD javareconf했지만 library(rJava)여전히 동일한 오류가 발생합니다. Error: package or namespace load failed for ‘rJava’: .onLoad failed in loadNamespace() for 'rJava', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so': ... Reason: image not found
Lazarus Thurston

0

다음 명령을 사용하여 R에서 참조를 변경할 수 있습니다.

sudo install_name_tool -change /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.