有時(shí)需要在 Python 項(xiàng)目中利用既有的 Java 代碼掌动,達(dá)到節(jié)省時(shí)間和開發(fā)成本的目的初家。因此,找到一個(gè) Python 代碼調(diào)用 Java 代碼的橋梁是非常有意義的购公。JPype 就是這樣的一個(gè)工具芯侥,利用它可以使 Python 程序方便的調(diào)用 Java 代碼尿孔,從而擴(kuò)充 Python 語言的能力,彌補(bǔ) Python 語言的不足筹麸。
生成測(cè)試jar包
編寫測(cè)試java函數(shù)如下:
打包
build -> 生成jar包(MANIFEST.MF文件需配置main函數(shù)類),不同項(xiàng)目也可使用其他方法
python包安裝
pip install jpype1
調(diào)用示例
①雏婶、使用jpype開啟jvm
②物赶、加載java類
③、調(diào)用java方法
④留晚、關(guān)閉jvm
具體代碼如下:
# 引入jpype模塊
import jpype
if __name__ == '__main__':
"""
①酵紫、使用jpype開啟jvm
②、加載java類
③错维、調(diào)用java方法
④奖地、關(guān)閉jvm
"""
# ①、使用jpype開啟虛擬機(jī)(在開啟jvm之前要加載類路徑)
# 加載剛才打包的jar文件
jar_path = '/test_jar/test.jar'
# 獲取jvm.dll 的文件路徑
jvmPath = jpype.getDefaultJVMPath()
# 啟動(dòng)jvm
jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % jar_path)
# ②赋焕、加載java類(參數(shù)是java的長(zhǎng)類名)
javaClass = jpype.JClass("com.self.demo.HelloWorld")
# 實(shí)例化java對(duì)象
javaInstance = javaClass()
# ③参歹、調(diào)用java方法
javaInstance.nPrintln("Hello World", 5)
# ④、關(guān)閉jvm:jvm隨著python程序的退出而結(jié)束
jpype.shutdownJVM()
運(yùn)行效果
參考文檔:http://www.pythontip.com/blog/post/4245/