sourcecode

OSX Yosemite로 "업그레이드"한 후 RStudio/R에서 rJava 로드 오류 발생

copyscript 2022. 9. 4. 21:49
반응형

OSX Yosemite로 "업그레이드"한 후 RStudio/R에서 rJava 로드 오류 발생

최근 OSX Mountain Lion에서 Yosemite로, R 3.1.3에서 3.2로 '업그레이드'했습니다.업그레이드 직후 R 또는 RStudio를 열었을 때 Java 6을 설치해야 한다는 팝업 메시지가 떴습니다.또한 로드rJava또는 rJava에 의존하는 패키지(예:xlsx)에 의해 RStudio가 크래시 되었습니다(R도 크래시 했습니다).R.app직접).

스택 오버플로우 등에서 발견된 몇 가지 수정(자세한 내용은 아래)을 시도하면 로딩할 수 있는 상태가 됩니다.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 답변에 따라):

    내보내기 JAVA_HOME="/usr/libexec/java_home - v 1.8 인치
    LD_LIBRARY_PATH=$JAVA_ 내보내기HOME/jre/lib/서버

  • 명령줄에서 다음과 같이 Java를 재설정했습니다.

    sudo R CMD javareconf -n

  • 확인했다options("java.home")이 설정이 되어 있는 것을 알게 되었습니다.NULL( SO 질문에 따라) 다음과 같이 설정해 보았습니다.

    옵션("java.home"="/Library/Java/JavaVirtual Machines/jdk1.8.0_45.jdk/Contents/Home/jre")

  • 최신 Java Development Kit 설치 후 재설치.rJava(어디서 찾았는지 기억이 안 나네요)

이 모든 것을 시도해 보던 중 어느 순간, 저는 로딩할 수 있었습니다.rJavaR을 크래시하지 않고 대신 위에 오류 메시지가 표시됩니다.또한 RStudio를 종료하면 정상적으로 종료되는 것처럼 보이지만 "RSTudio가 예기치 않게 종료되었습니다"라는 메시지가 뜨며 종료 시도 중 프로그램이 크래시되었음을 알 수 있습니다.

OS X용 Java 2014-001(Java 6)를 인스톨 할 수 없게 되어 버렸습니다.이제 R 또는 RStudio를 열었을 때 "This software need 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동작하며 에러를 발생시키지 않습니다.

그래서 저는 이제rJavaRStudio에 Java 경로를 제공하는 코드를 사용하여 명령줄에서 RStudio를 열면 작동합니다(위의 설명 참조).단, 커맨드 라인 크러지 없이 통상적인 Mac 방식으로 RStudio를 열 수 있도록 근본적인 문제를 해결할 수 있는 방법을 찾고 싶습니다.또, 구버전의 Java를 인스톨 하면, 장래에 문제가 생길지도 염려됩니다.

이 문제를 진단하고 해결하는 방법을 알고 있는 사람이 있습니까?

저도 당신과 같은 문제가 있어서 같은 단계를 거쳤습니다.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가 추가되어 파일을 로 덮어씁니다.

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

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

libjvm.dylib은 다음과 같이 실행할 수 있습니다.

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

Sierra()및 9에서는 다른 JVM 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/

다음 명령어가 작동합니다.

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

그 후 RStudio에서는 "xlsx" 패키지를 로드하여 rJava를 로드합니다.

library("xlsx")

추신 #1 환경: RStudio 0.99.491+ 및 R 3.2.3+를 탑재한 Mac OS X El Capitan 10.11.3+ (MacOS Sierra (10.12) 및 R.3.1에서도 테스트 완료)

저는 "#2"라고 합니다.openxlsx자바에 의존하지 않고 훨씬 빠르기 때문에 그 패키지를 사용하고 있습니다.그것이 다른 사람들에게 도움이 되길 바랍니다.

공유 라이브러리를 R 프레임워크 라이브러리 디렉토리에 링크하여 rJava를 재컴파일하거나 추가 절차를 수행할 필요 없이 CRAN rJava를 사용할 수 있어야 합니다.

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

Mac OS X El Capitan(10.11.6)을 실행하고 있는2대의 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"CHANGE: "CHANGE: " 。

    # 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. [ Terminal ]창에서 다음 명령을 수행합니다.

    sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
    
  6. [ Terminal ]창에서 다음 명령을 수행합니다.

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

간단한 순서는 다음과 같습니다.

  1. rJava 패키지를 삭제합니다.remove.packages(rJava)
  2. 가까이.
  3. Mac에 최신 Java 설치
  4. 터미널을 열고 sudo R CMD javareconf 명령을 입력합니다.
  5. 다음 명령어로 R을 열고 rJava를 설치합니다.

    install.packages("rJava", 의존관계=TRUE, 유형="source")

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

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

R CMD javareconf JAVA_CPPFLAGS=-I/시스템/라이브러리/프레임워크/JavaVM.framework/헤더

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

행운을 빌어요.

파일 시스템에 영향을 주지 않는 다른 간단한 답변도 있습니다.

$ 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 j j j j j 。

libjvm.dylib 파일의 위치를 확인합니다.

내 경우에는 이렇게 해 봐.

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

트러블 슈팅을 모두 실시해, 다음의 장소에서 jdk-11.0.1_osx-x64_bin.dmg 를 인스톨 했습니다.Oracle 다운로드

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

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

Rstudio에 로드하면서 JDK 버전에 대해 'rJava'가 상당히 엄격하다는 것을 알게 되었습니다.
OS.했습니다.
Rstudio(JDK 11)에 의해 유효하다고 가정된 존재하지 않는 디렉토리에 JDK 버전을 링크했습니다.

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

그리고 놀랍게도 그것은 마법처럼 작용한다...
덧붙여서, R 네이티브의 이전 지침에 따라 'rJava'를 실행해도 문제가 없었습니다.

여기에서 El Capitan용 레거시 Java 버전6을 다운로드 할 수 있습니다.https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US 그렇게 하면 rJava 패키지가 작동합니다.

가 래래행 i i i i this this this 아 this this this this this this this this this this this this 。rJava이 논의의 다른 일부와 마찬가지로 패키지화.나는 이 문제에 대한 해결책이 하나 이상이라고 확신하고 그들의 공헌에 진심으로 감사한다. 왜냐하면 때때로 아래와 같은 한 줄이 쓰레기통에 가는 시간을 많이 절약해 주기 때문이다.

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

합니다.sudo R CMD javareconf

의 몇 가지 이 이에 대해 , 이들은 하나를 한 후 합니다.rJava키지. 그 추가 하다는 것을 .나는 그 추가 단계가 불필요하다는 것을 알았다.

다음 명령을 사용하여 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

언급URL : https://stackoverflow.com/questions/30738974/rjava-load-error-in-rstudio-r-after-upgrading-to-osx-yosemite

반응형