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包,如图

 

 



posted @ 2019-09-02 15:16  花生与酒  阅读(6454)  评论(0编辑  收藏  举报