Python使用jpype模塊調(diào)用jar包過(guò)程解析
一、jpype模塊是什么?
能夠讓 python 代碼方便地調(diào)用 Java 代碼的工具
二、jpype模塊安裝
安裝和其它模塊沒(méi)區(qū)別,但是注意模塊名 是 jpype1 ,后面有個(gè)1
pip install jpype1
三、jpype模塊應(yīng)用(macOs下)
筆者在標(biāo)題里面?zhèn)渥⒘怂褂玫牟僮飨到y(tǒng),因?yàn)閣indows操作系統(tǒng)的一個(gè)配置有點(diǎn)區(qū)別,待會(huì)遇到再講解吧。
3.1 jpype模塊測(cè)試
import jpype
# getDefaultJVMPath 獲取默認(rèn)的 JVM 路徑
jvm_path = jpype.getDefaultJVMPath()
# startJVM()啟動(dòng) JAVA 虛擬機(jī)
jpype.startJVM(jvm_path,'-ea',convertStrings=False)
# 利用jpype調(diào)用輸出語(yǔ)句
jpype.java.lang.System.out.println('Success')
# shutdownJVM()關(guān)閉JAVA虛擬機(jī)
jpype.shutdownJVM()
在上面代碼中,如果你成功輸出hello,說(shuō)明環(huán)境安裝配置成功了。
其中 jpype.startJVM() 的定義是
startJVM(jvm, *args)
參數(shù) 1: jvm, 描述的是系統(tǒng)中 jvm.dll 文件所在的路徑,可以通過(guò)調(diào)用 jpype.getDefaultJVMPath() 得到默認(rèn)的 JVM 路徑。
參數(shù) 2: args, 為可選參數(shù),會(huì)被 JPype 直接傳遞給 JVM 作為 Java 虛擬機(jī)的啟動(dòng)參數(shù)。此處適合所有合法的 JVM 啟動(dòng)參數(shù),例
如:
常用為-ea啟動(dòng)斷言機(jī)制、-Djava.class.path調(diào)用的jar包路徑、-Djava.ext.dirs調(diào)用jar包的依賴(lài)包目錄等
3.2 jpype模塊調(diào)用jar包
第一步:編寫(xiě)java一個(gè)類(lèi),用eclipse等工具編寫(xiě),代碼如下:
package com.newdream;
//簡(jiǎn)單的一個(gè)java類(lèi)
public class Calc {
int num1;
int num2;
public Calc(int n1,int n2) {
this.num1 = n1;
this.num2 = n2;
}
public int add() {
return this.num1 + this.num2;
}
public int sub() {
return this.num1 - this.num2;
}
}
第二步:通過(guò)在eclipse中右擊該類(lèi),點(diǎn)擊export導(dǎo)出為jar包格式
第三步:把jar包放到python項(xiàng)目下后,編寫(xiě)代碼如下即可調(diào)用:
import jpype
jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path,
'-ea',
'-Djava.class.path=%s'%'./libs/Calc.jar',
convertStrings=False)
jclass = jpype.JClass('com.newdream.Calc') #加載類(lèi)
calc = jclass(10,20) #傳入所需參數(shù)
value = calc.add() #調(diào)用類(lèi)中的add方法
print(value)
jpype.shutdownJVM() #關(guān)閉JAVA虛擬機(jī)
以上即可完成調(diào)用jar包。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python根據(jù)unicode判斷語(yǔ)言類(lèi)型實(shí)例代碼
這篇文章主要介紹了python根據(jù)unicode判斷語(yǔ)言類(lèi)型實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python淺析多態(tài)與鴨子類(lèi)型使用實(shí)例
python是一門(mén)解釋語(yǔ)言,但是同java等靜態(tài)語(yǔ)言一樣,是可以通過(guò)繼承的方式實(shí)現(xiàn)多態(tài)。而且python還有一個(gè)自己的特殊實(shí)現(xiàn)多態(tài)的方法,就是通過(guò)鴨子類(lèi)型,來(lái)實(shí)現(xiàn)多態(tài)2022-10-10
Python Geopy庫(kù)地理編碼和地理距離計(jì)算案例展示
Geopy庫(kù)是Python處理地理數(shù)據(jù)的一個(gè)強(qiáng)大工具,能夠?qū)崿F(xiàn)地理編碼、反向地理編碼和地理距離計(jì)算,本文詳細(xì)介紹了Geopy的安裝與配置、核心功能、基本和高級(jí)用法,并通過(guò)實(shí)際應(yīng)用案例展示了其在地理編碼與數(shù)據(jù)可視化、距離計(jì)算和位置推薦系統(tǒng)中的應(yīng)用,感興趣的朋友一起看看吧2025-03-03
Python實(shí)現(xiàn)二分查找與bisect模塊詳解
二分查找又叫折半查找,二分查找應(yīng)該屬于減治技術(shù)的成功應(yīng)用。python標(biāo)準(zhǔn)庫(kù)中還有一個(gè)灰常給力的模塊,那就是bisect。這個(gè)庫(kù)接受有序的序列,內(nèi)部實(shí)現(xiàn)就是二分。下面這篇文章就詳細(xì)介紹了Python如何實(shí)現(xiàn)二分查找與bisect模塊,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01
Python讀取含url圖片鏈接的txt文檔方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了三種Python讀取含url圖片鏈接的txt文檔方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
Python使用自帶的ConfigParser模塊讀寫(xiě)ini配置文件
這篇文章主要介紹了Python使用自帶的ConfigParser模塊讀寫(xiě)ini配置文件的方法,ConfigParser中包含了對(duì)ini的節(jié)section的一些基本操作,使得改寫(xiě)ini時(shí)非常簡(jiǎn)便,需要的朋友可以參考下2016-06-06
Python連接SQLite數(shù)據(jù)庫(kù)并進(jìn)行增冊(cè)改查操作方法詳解
這篇文章主要介紹了Python對(duì)SQLite數(shù)據(jù)庫(kù)進(jìn)行增冊(cè)改查操作方法詳解,需要的朋友可以參考下2020-02-02
python3+PyQt5實(shí)現(xiàn)自定義窗口部件Counters
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5實(shí)現(xiàn)自定義窗口部件,Counters自定窗口部件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04

