Programming language/R

Mac M1(ARM 아키텍처)에서 library(rJava) 오류 해결 과정

data_start_ 2024. 5. 26. 22:49
{r}
install.packages(rJava)
library(rJava)

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/4.3-arm64/Resources/library/rJava/libs/rJava.so':
  dlopen(/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/rJava/libs/rJava.so, 0x0006): symbol not found in flat namespace (_JNI_CreateJavaVM)

 

1. ChatGPT3.5 에서는 java 환경 변수의 문제로 접근 

터미널에서 아래 명령어를 실행.

sudo R CMD javareconf

 

JAVA_HOME : /Library ~ 로 시작하는 경로를 복사.

아래 코드를 R console 에서 실행.

# Set JAVA_HOME and update PATH
Sys.setenv(JAVA_HOME = '복사한 경로')
Sys.setenv(LD_LIBRARY_PATH = '복사한 경로/lib/server')

# Install rJava and RWeka
system("R CMD javareconf")
install.packages('rJava', type = 'source')
install.packages('RWeka')

하지만 같은 오류가 발생한다.

 

2. 아키텍처 오류

m1맥북(arm64) 환경에 x86 버전 jdk가 설치되서 발생한 문제.

https://www.azul.com/downloads/?os=macos&architecture=arm-64-bit&package=jdk#zulu

 

Azul Downloads

No matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.

www.azul.com

ARM 64-bit JDK를 설치한다.

 

다시 터미널에서 JAVA_HOME 경로를 확인.

 

R studio 터미널에서 아래 명령어 실행

nano ~/.Renviron
JDK_HOME=/Library/Java/JavaVirtualMachines/zulu-22.jdk/Contents/Home

'/Library/Java/JavaVirtualMachines/zulu-22.jdk/Contents/Home' 부분은 본인의 Java JDK 설치 경로에 맞게 수정해야 함.

 

library(rJava) 실행하면 오류가 발생하지 않음.

 

[참고자료]

1. https://github.com/rstudio/rstudio/issues/11130

2. https://jmook.tistory.com/14

3. ChatGPT3.5버전