본문 바로가기

정리/IT공부

[R] Error : .onLoad failed in loadNamespace() for 'rJava', details:

728x90

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


이 문제가 발생하는 이유부터 찾아야 하는데


나같은 경우엔 다음의 밑줄 순서에서 에러가 발생했다.

1. openjdk 11이 이미 설치 되어 있었음.

2. java-8-oracle을 자동설치. (Y를 누르며 설치함)

3. (Error Occured) !!! library(rJava) 시 에러 발생.


이 에러의 원인은 Java path 가 꼬였기 때문이다.



그러면 Java Path 를 해결하기 위해 어떻게 해야하나?


포인트는 총 3개가 되는 것으로 보인다.



Level 1 : 자동 재설정으로 path를 수정할 수 있다.

 다음의 명령어를 수행하면 된다.  

$sudo R CMD javareconf




Level 2 : 위와 같은 방법으로 되지 않았을 경우 R 내에서 강제로  Path를 지정해 줄 수 있다.

Sys.getenv() 로 

J2REDIR                           /usr/lib/jvm/default-java
J2SDKDIR                          /usr/lib/jvm/default-java
JAVA_HOME                         /usr/lib/jvm/default-java

내가 원하는 Path가 맞는지 확인해보고 

아래 처럼 원하는 것으로 설정해준다. (아래의 

Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-11-openjdk-amd64') #/usr/lib/jvm/java-8-oracle

Sys.setenv(J2REDIR='/usr/lib/jvm/java-11-openjdk-amd64') #/usr/lib/jvm/java-8-oracle

Sys.setenv(J2SDKDIR='/usr/lib/jvm/java-11-openjdk-amd64') #/usr/lib/jvm/java-8-oracle

# 경우에 따라 DERBY_HOME  설정이 필요한 사람도 있을 수 있다.



Level 3 : 위에서도 해결이 안된다면 System Path를 강제로 수정해줘야한다.

위에서 해결이 되는 경우에도 R특정 명령어를 사용할때 제대로 수행이 안될 수 있으므로 결국엔 System Path를 수정하는 쪽을 추천한다.

수정해야할 포인트는 크게  두 곳이다.


$sudo vim /etc/environment

$sudo vim /etc/profile.d/jdk.sh



두 곳에서 본인과 관련 있는 Path는 모두 수정하면 된다. (수정 내용은 위의 자료들 또는 외부 사이트를 참고하길 바란다.)

수정후 $source filename 명령어 치는 것을 잊지는 말자.