etc/memo

[파이썬 오류 해결] No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

uyt8989 2022. 3. 25. 00:57

자연어 처리 공부를 하려고 KoNLPy를 사용하고 싶었다. 그런데 자꾸 다음과 같은 오류가 날 괴롭혔다.

 

No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

이 오류가 무엇 인고하니 JAVA_HOME 경로에 jvm.dll 파일이 없어서 생기는 문제였다.

 

첫 번째 방법 

: 나는 해결이 안 됐지만 이 방법으로 해결한 사람들이 많아 보였다.

찾아보니 jvm.dll 파일이  C:\Program Files\Java\jdk-17.0.2\bin\server\ 안에 있길래 JAVA_HOME을 C:\Program Files\Java\jdk-17.0.2으로 추가하고 Path에 % JAVA_HOME%\bin\server\을 추가했다. 이후에 프롬프트 창을 켜서 파이썬 버전에 맞는 JPype를 다시 설치하고 KoNLPy도 다시 깔았다.

 

JPype는 여기서 다운로드하면 된다.

 

Python Extension Packages for Windows - Christoph Gohlke

by Christoph Gohlke, Laboratory for Fluorescence Dynamics, University of California, Irvine. Updated on 19 March 2022 at 00:11 UTC. This page provides 32 and 64-bit Windows binaries of many scientific open-source extension packages for the official CPython

www.lfd.uci.edu

 

하지만 여전히 똑같은 에러....ㅠ

 

두 번째 방법

: 이 방법으로 해결됐다!!!

계속 구글링을 하다 보니 아예 코드를 뜯어고치는 방법이 있었다. 아나콘다가 설치된 폴더를 찾아가서 Lib\site-packages\jpype에 보면 _jvmfinder.py라는 파일이 있다. 이 파일을 보면 _get_from_java 모듈에 java_home이라는 변수가 있다. 원래는 os.getenv("JAVA_HOME")이라고 되어 있는데 얘를 그냥 아까 JAVA_HOME에 넣었던 주소로 바꿔주면 된다. 무서워서 원래 코드를 주석 처리하고 조심스럽게 했다.

 

이 녀석이 문제였다

 

수정하고 또 JPype랑 KoNLPy 다시 설치했다. 그랬더니 드디어 오류가 발생하지 않았다. 파이썬 똑똑한 척은 다 하더니 환경 변수 하나 못 가져오는 녀석이였네....

 

드디어 된다...!

 

나는 자바랑 파이썬 둘 다 64-bit 였고 원래 JPype도 깔려있었다. 왜 환경 변수가 없었는지는 모르겠지만 이전에 코틀린 연습할 때는 문제가 없었다. 야밤에 해결하느라 힘들었다.

'etc > memo' 카테고리의 다른 글

[Linux/Ubuntu] Release file is not valid yet. Updates for this repository will not be applied. 해결  (0) 2022.05.22
[Python] Module Downgrade  (0) 2022.05.20
자질구레한 잡기술  (0) 2022.02.19
apt vs apt-get  (0) 2022.02.13
Shell Script  (0) 2022.01.23