오류Error

[오류Error] FileNotFoundError: [Errno 2] JVM DLL not found: /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib"

독립성이 강한 ISFP 2024. 11. 15. 17:01
728x90
반응형

텍스트 전처리 공부하는 중에 로컬에서 토크나이저를 수행하려고 하니 에러가 발생했다.

 

# 불용어 정의
stopwords = ['의','가','이','은','들','는','좀','잘','걍','과','도','를','으로','자','에','와','한','하다']

# 형태소 분석기 OKT를 사용한 토큰화 작업 (다소 시간 소요)
okt = Okt()  ------> 에러

 

{
	"name": "FileNotFoundError",
	"message": "[Errno 2] JVM DLL not found: /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib",
	"stack": "---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[26], line 5
      2 stopwords = ['의','가','이','은','들','는','좀','잘','걍','과','도','를','으로','자','에','와','한','하다']
      4 # 형태소 분석기 OKT를 사용한 토큰화 작업 (다소 시간 소요)
----> 5 okt = Okt()
      7 # tokenized_data = []
      8 # for sentence in tqdm(train_data['document']):
      9 #     tokenized_sentence = okt.morphs(sentence, stem=True) # 토큰화
     10 #     stopwords_removed_sentence = [word for word in tokenized_sentence if not word in stopwords] # 불용어 제거
     11 #     tokenized_data.append(stopwords_removed_sentence)

File ~/opt/anaconda3/envs/song38/lib/python3.8/site-packages/konlpy/tag/_okt.py:51, in Okt.__init__(self, jvmpath, max_heap_size)
     49 def __init__(self, jvmpath=None, max_heap_size=1024):
     50     if not jpype.isJVMStarted():
---> 51         jvm.init_jvm(jvmpath, max_heap_size)
     53     oktJavaPackage = jpype.JPackage('kr.lucypark.okt')
     54     OktInterfaceJavaClass = oktJavaPackage.OktInterface

File ~/opt/anaconda3/envs/song38/lib/python3.8/site-packages/konlpy/jvm.py:64, in init_jvm(jvmpath, max_heap_size)
     61     jvmpath = '%s/lib/jli/libjli.dylib' % jvmpath.split('/lib/')[0]
     63 if jvmpath:
---> 64     jpype.startJVM(jvmpath, '-Dfile.encoding=UTF8',
     65                             '-ea', '-Xmx{}m'.format(max_heap_size),
     66                             classpath=classpath,
     67                             convertStrings=True)
     68 else:
     69     raise ValueError(\"Please specify the JVM path.\")

File ~/opt/anaconda3/envs/song38/lib/python3.8/site-packages/jpype/_core.py:247, in startJVM(jvmpath, classpath, ignoreUnrecognized, convertStrings, interrupt, *jvmargs)
    245 prior = [locale.getlocale(i) for i in categories]
    246 # Start the JVM
--> 247 _jpype.startup(jvmpath, jvmargs + extra_jvm_args,
    248                ignoreUnrecognized, convertStrings, interrupt)
    249 # Collect required resources for operation
    250 initializeResources()

FileNotFoundError: [Errno 2] JVM DLL not found: /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib"
}

 


우선!

Java 설치 확인 및 재설치

Java가 제대로 설치되었는지 확인해보았다.(Mac)

java -version

 

현재 Java가 Microsoft OpenJDK 11 버전으로 설치된 상태이다.

버전 정보에서 Microsoft-25199 부분이 보이는 것으로 확인할 수 있는데, 이 Microsoft OpenJDK와 Konlpy의 JPype 라이브러리 간의 호환성 문제가 발생할 수 있다고 함.

 

Konlpy는 일반적으로 Oracle JDK 또는 OpenJDK와 더 잘 호환되기 때문에, Microsoft OpenJDK에서는 문제가 발생할 수 있음.

특히 MacOS에서 Konlpy는 특정 JVM 라이브러리(libjli.dylib)에 의존하기 때문에, 이 부분에서 충돌이 발생한 것으로 보임.

 

해결 방법

 

Microsoft OpenJDK를 제거하고, Oracle JDK 또는 AdoptOpenJDK(현재는 Eclipse Temurin)로 교체!

 

1. 기존 Microsoft OpenJDK 제거

sudo rm -rf /Library/Java/JavaVirtualMachines/microsoft-11.jdk

password 입력하면 제거 됨

 

2. AdoptOpenJDK (Eclipse Temurin) 설치

MacOS에서 brew를 사용하여 Eclipse Temurin(OpenJDK 11)을 설치할 수 있음

brew install --cask temurin11

설치 후, Java 경로를 다시 설정.

echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 11)' >> ~/.zshrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

 

3. 설치된 Java 버전 확인

java -version

 

이렇게 하니까 해결되었음!

728x90
반응형