1. 程式人生 > >7、【Python】Python jpype呼叫java類庫

7、【Python】Python jpype呼叫java類庫

Python jpype

一、安裝

    如果你安裝使用的是python 3.3及以上的版本,這些版本都內建了pip包管理器,你可以使用pip簡單快速的安裝jpype:

pip install jpype1
二、呼叫java API

說明:在使用python jpype 呼叫java API前,需要提前安裝配置java jdk,這裡就不詳細介紹了。
     新建一個test.py檔案,程式碼如下:

from jpype import * 
startJVM(getDefaultJVMPath(), "-ea”) 
java.lang.System.out.
println("Hello World”) shutdownJVM()

    執行test.py檔案:

Python test.py

     執行結果:

Hello World
三、呼叫第三方類方法
1、編譯

     在com目錄下,新建test.java檔案,程式碼如下:

package com; 
public class Test { 
    public String run(String str){ 
        return str; 
    } 
}

     編譯test.java檔案:

javac test.java

     使用javac命令可以將test.java檔案編譯生成test.class檔案,將編譯生成的test.class檔案放入com目錄下的libs目錄下。

說明:網上很多教程介紹這裡需要將test.java和test.class,統一打包為一個.jar檔案,在進行python呼叫時需要指定.jar包的路徑。但經過個人的實踐測試發現這是個一個坑,當然也可能是我在某一步出現了某個我未能發現的問題。我的做法是:只需要將test.java檔案編譯生成test.class檔案,在python呼叫時指定test.class檔案的路徑即可。具體過程如下:

2、python呼叫

     在com目錄下,新建test.py檔案,程式碼如下:

jarpath = os.path.join(os.path.abspath('.'), 'libs/test.class')
jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % jarpath)
Test = jpype.JClass('com.Test')
# 或者通過JPackage引用Test類
# com = jpype.JPackage('com')
# Test = com.Test
t = Test()
res = t.run("a")
print res
jpype.shutdownJVM()

     開啟終端,編譯執行test.py檔案,輸入如下:

a