Python Calling Java Functions with JARs

jar -xvf file.jar  

如果jar里嵌套jar,可能会报错(说某个函数没有定义,其实就是缺少和它相关的jar,只不过这个报错非常具有误导性)。把文件都解压出来,就能用了…… 解压出来的class文件也可以用,不过还是直接用jar最好吧。

from jpype import *  
import os

if __name__ == "__main__":  
    classpath = os.getcwd() + "jars/hw.jar:" + os.getcwd()
    startJVM(getDefaultJVMPath(), "-Djava.ext.dirs=%s" % os.getcwd() + "/jars", "-ea")
    java.lang.System.out.println(getDefaultJVMPath())
    java.lang.System.out.println(java.lang.System.getProperty("java.class.path"))
    java.lang.System.out.println(java.lang.System.getProperty("java.ext.dirs"))
    java.lang.System.out.println(java.lang.System.getProperty("user.dir"))

    hwNegativeDetector = JClass("com.antarx.hwNegativeDetector")
    test = hwNegativeDetector("chineseFactored.ser.gz", "entity.txt")

    shutdownJVM()