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.點(diǎn)擊file->project structure
3.點(diǎn)擊選擇想要生成jar包的類,這里我選擇testFunction.class。
注意Directory for meta-inf/manifest.mf的位置不要選擇默認(rèn)的,最好選擇項(xiàng)目根目錄。
我選擇默認(rèn)的會(huì)找不到生成的jar包的位置。
4.點(diǎn)擊Build->Build Artifacts后選擇對應(yīng)的Artifact,并點(diǎn)擊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.實(shí)例化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)用會(huì)出現(xiàn)重新啟動(dòng)失敗的問題,那么解決辦法是把代碼放在main()函數(shù)中,前5步代碼初始化完畢后,每次只循環(huán)使用第6步代碼。
第7步代碼去掉。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 類與元類的深度挖掘 II【經(jīng)驗(yàn)】
元類在 Python 中屬于比較深層的黑魔法,在一般的日常應(yīng)用中可能并不常用,但理解其背后的原理對于理解 Python 面向?qū)ο缶幊桃约耙磺薪詾閷ο蟮睦砟詈苡袔椭蝗绻阈枰獙︻愡M(jìn)行深度改造,至少要知道從何入手。2016-05-05使用python實(shí)現(xiàn)正則匹配檢索遠(yuǎn)端FTP目錄下的文件
這篇文章主要介紹了使用python實(shí)現(xiàn)正則匹配檢索遠(yuǎn)端FTP目錄下的文件的方法,非常的簡單實(shí)用,需要的小伙伴參考下2015-03-03解決python3中自定義wsgi函數(shù),make_server函數(shù)報(bào)錯(cuò)的問題
下面小編就為大家分享一篇解決python3中自定義wsgi函數(shù),make_server函數(shù)報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11Python函數(shù)的周期性執(zhí)行實(shí)現(xiàn)方法
這篇文章主要介紹了Python函數(shù)的周期性執(zhí)行實(shí)現(xiàn)方法,涉及Python使用sched模塊實(shí)現(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í)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06