Python調(diào)用Java可執(zhí)行jar包問題
基于IDEA生成可執(zhí)行jar包
1.編寫class的代碼,注意一定要有main()方法才可以生成jar包,main()方法可以沒有內(nèi)容。
例如:
public class testFunction { public static void main(String[] args) { } public static void send() { System.out.println("i use message"); } }
2.點擊file->project structure
3.點擊選擇想要生成jar包的類,這里我選擇testFunction.class。
注意Directory for meta-inf/manifest.mf的位置不要選擇默認(rèn)的,最好選擇項目根目錄。
我選擇默認(rèn)的會找不到生成的jar包的位置。
4.點擊Build->Build Artifacts后選擇對應(yīng)的Artifact,并點擊Build即生成成功。
5.生成的jar包
Python如何調(diào)用jar
1.需要下載jpype,windows+R輸入cmd進(jìn)入命令提示符,將路徑轉(zhuǎn)到j(luò)pype所在目錄,執(zhí)行pip install jpype文件名。
2.具體操作方法請自行搜索,能找到詳細(xì)步驟。
代碼如下
def sendMessage(): # 1.加載jar包 jarpath = os.path.join(os.path.abspath("."),"(填寫你的jar包的filepath)\\wit_test.jar") # 2.獲取jvm.dll 的文件路徑 jvmPath = jpype.getDefaultJVMPath() # 3.開啟jvm jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % (jarpath)) # 4.加載java類(參數(shù)是java的長類名) javaClass = jpype.JClass("testFunction") # 5.實例化java對象 javaInstance = javaClass() # 6.調(diào)用java方法,由于我寫的是靜態(tài)方法,直接使用類名就可以調(diào)用方法 javaInstance.send() # 7.關(guān)閉jvm jpype.shutdownJVM() pass
如果只需調(diào)用一次jar包,上述代碼可行。
如果需要多次調(diào)用會出現(xiàn)重新啟動失敗的問題,那么解決辦法是把代碼放在main()函數(shù)中,前5步代碼初始化完畢后,每次只循環(huán)使用第6步代碼。
第7步代碼去掉。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用python實現(xiàn)正則匹配檢索遠(yuǎn)端FTP目錄下的文件
這篇文章主要介紹了使用python實現(xiàn)正則匹配檢索遠(yuǎn)端FTP目錄下的文件的方法,非常的簡單實用,需要的小伙伴參考下2015-03-03解決python3中自定義wsgi函數(shù),make_server函數(shù)報錯的問題
下面小編就為大家分享一篇解決python3中自定義wsgi函數(shù),make_server函數(shù)報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11Python函數(shù)的周期性執(zhí)行實現(xiàn)方法
這篇文章主要介紹了Python函數(shù)的周期性執(zhí)行實現(xiàn)方法,涉及Python使用sched模塊實現(xiàn)函數(shù)周期性調(diào)度觸發(fā)的相關(guān)技巧,需要的朋友可以參考下2016-08-08Numpy中ndim、shape、dtype、astype的用法詳解
這篇文章主要介紹了Numpy中ndim、shape、dtype、astype的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06