저는 최근에 OSX Mountain Lion에서 Yosemite로, R 3.1.3에서 3.2로 “업그레이드”했습니다. 업그레이드 직후 R 또는 RStudio를 열었을 때 Java 6을 설치해야한다는 팝업 메시지가 표시되었습니다. 또한 rJava
rJava (예 :)에 의존하는 패키지를 로드 하거나 로드 하면 xlsx
RStudio가 충돌 (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
하고 소스에서 다시 설치 했습니다 (어디에서 찾았는지 기억할 수 없음).
이 모든 것을 시도하는 동안 어떤 시점에서 rJava
R을 충돌시키지 않고 로드 할 수 있었지만 대신 위에 게시 된 오류 메시지를 받았습니다. 또한 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가 설치되어 있으면 문제가 발생할 수 있다는 점도 우려됩니다.
누구든지이 문제를 진단하고 해결하는 방법에 대한 아이디어가 있습니까?
답변
나는 같은 문제가 있었고 당신과 같은 단계를 거쳤습니다. 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)
답변
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에서 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에 의존하지 않는다는 것을 알았습니다. 그래서 지금은 그 패키지를 사용하고 있습니다. 다른 사람들에게 도움이되기를 바랍니다.
답변
당신은 다시 컴파일 할 필요없이 크랑 rJava을 사용할 수 있어야 rJava을 하거나 R 프레임 워크 라이브러리 디렉토리에 공유 라이브러리를 연결하여 추가 단계를 수행하십시오.
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)을 실행하는 두 대의 Mac에서 제대로 작동하도록 구성한 방법입니다.
-
터미널 창에서 다음 명령을 실행하여 ‘rJava’를 제거하십시오.
Rscript -e 'remove.packages("rJava")' sudo Rscript -e 'remove.packages("rJava")'
-
Oracle에서 Java 소프트웨어를 다운로드하고 설치합니다. https://www.java.com/en/download/mac_download.jsp
-
/Users/<userid>/.bashrc
선호하는 편집기 를 사용 하려면 다음 행을 추가하십시오 .# Set JAVA_HOME so rJava package can find it export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
-
터미널, R 및 RStudio 창을 닫고 다시 시작합니다 (에 대한 변경 사항 적용
.bashrc
). -
터미널 창에서 다음 명령을 실행하십시오.
sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
-
터미널 창에서 다음 명령을 실행하십시오.
sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'