python 調用java 開發接口


有一個需求, 需要調用java的jar包, 因為擅長用python寫程序, 那么就需要找個python包,調用java

選來選取, 找到了JPype  

https://jpype.readthedocs.io/en/latest/

其他包不要好用,有些需要額外在其他地方啟動jvm等.

遇到的最大困難就是安裝

參考官網 

pip install JPype1 出錯
按官網建議
pip install python-dev 后,再安裝也不行

download whl
pip install xxxx.whl 也不行,具體錯不不描述了

解決辦法:
upgrade pip
pip install .....whl 成功

具體code
=============python ===========================
import  jpype
import jpype.imports
import os.path
jvmPath = jpype.getDefaultJVMPath() # 獲得系統的jvm路徑
jarpath = os.path.join(os.path.abspath('.'), 'javajar/md5Encoder.jar')
dependency = os.path.join(os.path.abspath('.'), 'javajar')
jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % jarpath, "-Djava.ext.dirs=%s" % dependency) # 當有依賴的JAR包存在時,一定要使用-Djava.ext.dirs參數進行引入

jpype.java.lang.System.out.println("hello world")
try:
aa = jpype.JClass('org.loushang.bsp.security.encoding.BspEncoder')
except Exception as e:
print(e)

BspEncoder = jpype.JClass('org.loushang.bsp.security.encoding.BspEncoder')
Md5PasswordEncoder = jpype.JClass('org.loushang.bsp.security.encoding.Md5PasswordEncoder')
bspEncoder = BspEncoder()
md5PasswordEncoder=Md5PasswordEncoder()
bspEncoder.setEncoder(md5PasswordEncoder)
res=bspEncoder.encodePassword('aaa')
print(res)
jpype.shutdownJVM() # 關閉jvm

===========end =============

=============相同處理,如果用java寫 ===========================
public static void main(String[] args){
BspEncoder bspEncoder = new BspEncoder();
bspEncoder.setEncoder(new Md5PasswordEncoder());
String st1 = bspEncoder.encodePassword("superadmin");
System.out.println(st1);

String aa1=bspEncoder.encodePassword("aaa");
System.out.println(aa1);
String aa2=bspEncoder.encodePassword("1qaz@WSX");
System.out.println(aa2);
}
=============相同處理,如果用java寫 end ===========================
調用的java需要2個jar包,如圖

 

 




免責聲明!

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



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