티스토리 뷰

Programing/Python

JPype 사용기

Tomining 2016. 7. 19. 12:00

설치하기

pip install C:\dev\dev_env\python\JPype1-0.6.1-cp35-none-win_amd64.whl


정상적으로 설치 되었는지는 import jpype 로 확인할 수 있습니다.
만약 아래와 같은 오류가 발생한다면 정상적으로 설치 되지 않았을 수 있습니다.

ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.

window 환경에서 정상적인 설치 후에도 위와 같은 오류가 발생한 경우라면 Visual C++ 재배포 가능 패키지를 다운로드하여 설치하면 해결된다는 자료가 있어 설치해 보았습니다. 그랬더니 위 오류는 해결되었으나 다른 오류가 발생하였습니다.

ImportError: numpy.core.multiarray failed to import

NumPy 가 설치되지 않아서 발생한 오류입니다. wheel 을 이용하여 설치해 줍니다.

pip install "C:\dev\dev_env\python\numpy-1.11.1+mkl-cp35-cp35m-win_amd64.whl"

다시 import jpype 를 실행해 보면 정상적으로 import 됨을 확인 할 수 있습니다.

사용하기

기존 Jar 에 있는 Java Class 를 로딩하려면 아래와 같이 진행하면 됩니다.

import os
import jpype as jp

classpath = os.pathsep.join((“jar path”, “jar2 path” …)
jp.startJVM(jp.getDefaultJVMPath(), “-ea”, “-Djava.class.path=%s” % classpath)

j_class = jp.Class(“package.class”)
jc = j_class()
jc.method() # non-static
j_class.static_method() # static

j_package = jp.JPackage(‘package’)
j_class = j_package.className()
jc = j_class()
jc.method() # non-static
j_class.static_method() # static

jp.shutdownJVM()

Jpype 사용시 주로 실수하는 부분이 몇 가지 있습니다.
  • classpath 파라메터 이름 오타
    대/소문자를 구분하기 때문에 오타로 인해 JVM 이 시작되지 못하는 경우가 있습니다.
  • jar 에 관련된 dependency jar 가 있는 경우 함께 classpath 에 잡아 주어야 합니다.
  • java method overloading 이슈
    Java 의 경우 동일한 method 이름을 갖고 있더라도 overloading 을 통해 runtime시에 동적으로 method 호출이 이루어집니다.
    하지만 Jpype 를 사용할 때에는 그 부분을 확실하게 해 주어야 합니다.
    즉, Java method 호출하는 부분에서 파라메터가 String 타입이라면 str() 을 이용하여 명시적으로 타입을 지정해 줄 수 있어야 합니다.

느낀점

테스트 시에 2가지 지점에서 주로 오류가 발생하였고, 상당히 많은 시간을 보냈습니다.
첫 번째가 startJVM 시 오류였고, 두 번째가 Java Class 를 사용하는 부분이었습니다.
그 원인에는 몇가지가 있지만 오류 발생시 노출되는 Stacktrace 로는 상세한 정보를 확인할 수 없어 불편함을 많이 느꼈습니다.



참조

'Programing > Python' 카테고리의 다른 글

PEP8 이란?  (0) 2016.07.27
APScheduler 사용기  (0) 2016.07.26
Python Intellij Project 설정시 Django 인식 오류  (0) 2016.07.14
Window 환경에서 Python VirtualEnv 사용하기  (0) 2016.07.06
Python 기초 스터디 자료  (0) 2016.03.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함