brunch

You can make anything
by writing

C.S.Lewis

by 인생은 찰랑 Jun 17. 2018

Mac OS_R : library(rJava) 오류  

문과와 빅데이터

직전 포스팅에서 install.packages("rJava")의 오류를 고민했다면,

이번에는 rJava패키지를 불러오기 시에 발생하는 오류를 알아보자.


<Error>

Error: package or namespace load failed for ‘rJava’:

 .onLoad failed in loadNamespace() for 'rJava', details:

~~~~

Library not loaded : 경로/경로/경로/경로

 

 아마도 메인 에러는 이것으로 나올 것이라 예상함.

이는 R의 라이브러리 폴더에 libjvm.dylib를 연결시키는 고리를 만들어 줘야 한다.

그 방법으로는 두 가지

 

 1.  R에서 dyn.load()

<Error>

call: dyn.load(file, DLLpath = DLLpath, …)

 위의 에러가 있을 경우, 


> dyn.load(paste0(system2('/usr/libexec/java_home', stdout = TRUE), '/jre/lib/server/libjvm.dylib'))


해당 명령문을 R 콘솔창에 입력해 두 경로를 연결 시킬 수 있게 한다. 


하지만, 위 식을 입력했을 때 아래와 같은 에러가 뜬다면, 본인 컴퓨터에서의 libjvm.dylib의 위치를 잘못 설정했기 때문일 가능성이 있다. 


<Error>

unable to load shared object '/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/jre/lib/server/libjvm.dylib'

 

- 이때 필요한 libjvm.dylib의 위치는 아래 명령문을 통해서 확인할 수 있음 

> dir(paste0(system2('/usr/libexec/java_home', stdout = TRUE)))





2. 터미널에서 cd /  ln

본인의 R 프로그램 버전과 Java 버전에 맞게 디렉토리를 지정하자.


R 3.4.4

Java 10.0.1


터미널에서 아래 두 명령문을 본인에게 맞게 차례로 입력한다.


cd /Library/Frameworks/R.framework/Versions/3.4/Resources/lib


ln -s /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/jre/lib/server/libjvm.dylib libjvm.dylib


본인 R 버전에 맞는 디렉토리를 설정하고 JVM 라이브러리에 그것을 연결하는  것

첫번째 경로는 R에서 확인 가능하고, 

두번째 경로는 rJava 패키지 설치 시 터미널에서 확인했던 java home path의 하위 경로를 이용하면 된다.



이렇게 설정 후에 

library(rJava)를 해주면 에러없이 불러올 수 있다.

그와 더불어 Java 기반의 패키지 함수들을 문제없이 가져올 수 있게 된다.




위의 두 가지 방법은 사실상 같은 방법을 다른 프로그램을 통해서 하는 느낌인데

나는 dyn.load()로는 에러가 떴고 그 다음 명시한 방법처럼 다시 경로를 입력해보진 못했다. 

왜냐면 바로 터미널에서 디렉토리 설정 및 연결을 하였기 때문이다.


R에 대해서 이제 공부하고 있는 병아리 입장에서는 dyn.load(), paste0()과 system2()를 정확히 이해하여 자유자재로 활용하기에 무리가 있다. 하지만 어느정도 의미를 이해하고 넘어가는 것만으로도 지금 단계에서는 충분할 것 같다.


작가의 이전글 Mac OS_R : rJava 패키지 설치 오류

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari