카테고리 없음

Q. SystemError: java.lang.ClassNotFoundException: org.jpype.classloader.DynamicClassLoader 해결방법은?

makeitworth 2022. 1. 3. 15:16

환경

Windows 10 Pro

python 3.8.12

 

에러 발생 상황

konlpy를 활용해 형태소 분석하는 코드가 포함된 앱을 cx_Freeze 모듈을 활용하여 exe 실행파일을 만들었다.

앱이 cmd창에서 파이썬 파일을 실행할 때는 에러없이 잘 실행되었으나 exe 파일을 실행하면 아래와 같은 에러 메세지가 뜨는 상황.

 

에러 메세지

 

  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\jpype\_core.py", line 221, in startJVM
    _jpype.startup(jvmpath, tuple(args),
SystemError: java.lang.ClassNotFoundException: org.jpype.classloader.DynamicClassLoader

 

해결

 

역시 에러 메세지로 구글 검색해서 나오는 몇몇 블로그를 확인했는데, 이전 에러의 경우와 같이 jpype 버전을 낮춰보라는 제안이 많았다. 나는 이미 지난 번에 한 번 낮춰서 1.2.0 버전이었는데, 1보다 낮은 버전은 또 파이썬 3.8.12와 compatible하지 않았다. 그래서 1.12.0 까지 낮췄는데도 잘 실행이 되지 않았다.

 

깃허브 jpype 레포의 이슈에서 이와 같은 논의를 볼 수 있었는데, exe 실행파일만들때 옵션으로 add-binary 해서 site-packages에 org.jpype.jar를 추가하라는 거였는데, cx_Freeze 모듈에서 대응하는 코드를 찾지 못해 포기.

 

https://github.com/jpype-project/jpype/issues/876

 

PyInstaller support? · Issue #876 · jpype-project/jpype

Is there existing PyInstaller support or might it be added? I am of course hoping this is a trivial thing to debug for someone with actual Java and JPype knowledge. :] I have been using javabridge ...

github.com

https://hogni.tistory.com/103

 

pyinstaller 튜토리얼 소개: py 파일을 exe 파일로 변환하기

pyinstaller 사용이 처음이라 상당히 애를 먹었습니다. 세 가지 어려움이 있었는데요. 1) 특정 파일을 binary형태로 exe 파일에 포함시키는 것 2) RuntimeError: maximum recursion depth exceeded while calling..

hogni.tistory.com

 

결국 파이참에서 새 프로젝트를 만들고, 코드에서 사용하는 라이브러리를 하나씩 requirements에 적용하면서 다시 환경을 구축해 해결하였다.