python常識系列14-->python通過jpype模塊調用jar包


前言

       能堅持一件事,本身就是一種很了不起的才華。

一、jpype模塊是什么?

  • 能夠讓 python 代碼方便地調用 Java 代碼的工具

二、jpype模塊安裝

安裝和其它模塊沒區別,但是注意模塊名 是 jpype1 ,后面有個1

pip install jpype1

三、jpype模塊應用(macOs下)

筆者在標題里面備注了所使用的操作系統,因為windows操作系統的一個配置有點區別,待會遇到再講解吧。

3.1 jpype模塊測試

import jpype

# getDefaultJVMPath 獲取默認的 JVM 路徑
jvm_path = jpype.getDefaultJVMPath()
# startJVM()啟動 JAVA 虛擬機
jpype.startJVM(jvm_path,'-ea',convertStrings=False)
# 利用jpype調用輸出語句
jpype.java.lang.System.out.println('Success')
# shutdownJVM()關閉JAVA虛擬機
jpype.shutdownJVM()

在上面代碼中,如果你成功輸出hello,說明環境安裝配置成功了。
其中 jpype.startJVM() 的定義是

startJVM(jvm, *args)

參數 1: jvm, 描述的是系統中 jvm.dll 文件所在的路徑,可以通過調用 jpype.getDefaultJVMPath() 得到默認的 JVM 路徑。
參數 2: args, 為可選參數,會被 JPype 直接傳遞給 JVM 作為 Java 虛擬機的啟動參數。此處適合所有合法的 JVM 啟動參數,例如:
常用為-ea啟動斷言機制、-Djava.class.path調用的jar包路徑、-Djava.ext.dirs調用jar包的依賴包目錄等

3.2 jpype模塊調用jar包

第一步:編寫java一個類,用eclipse等工具編寫,代碼如下:

package com.newdream;

//簡單的一個java類
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;
	}
	
}

第二步:通過在eclipse中右擊該類,點擊export導出為jar包格式

第三步:把jar包放到python項目下后,編寫代碼如下即可調用:

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')  #加載類
calc = jclass(10,20)  #傳入所需參數
value = calc.add() #調用類中的add方法
print(value)
jpype.shutdownJVM() #關閉JAVA虛擬機

以上即可完成調用jar包。

四、小結

筆者主要要調用java的加解密算法完成接口加解密才使用的這個模塊,編寫此博客有點拋磚引玉的成分,大家有好的建議或者日常工作中的使用可以留言或者加筆者微信。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM