python 调用java程序
今天为什么讲python调用java程序?
最近在做基于python的locust压力测试,api接口程序是java版本,导致python无法匹配签名模式,需要python调用java的签名程序。
首先需要按照python依赖包
pip install jpype1
jpype调用jar包
jpype的原理是在python进程中嵌入了java虚拟机,并与虚拟机进行通信。
import jpype # 如果只有java程序,那需要先打成一个jar包来给python引用 ,有java.jar就可以直接使用 def init_jvm(): jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % 'java.jar') def getsign(privateKey,publicKey): VerCls = jpype.JClass("com.sign") # 引用的java包与类名 sign = VerCls().getSign(privateKey,publicKey)
return sign def shutdowm(): try: jpype.shutdownJVM() except: pass if __name__=="__main__": init_jvm() print(getsign("priyyyy","alpha1234")) shutdowm()
代码说明如下:
- 需要提供java.jar,如果只有java程序,那需要先打成一个jar包来给python引
- init_jvm函数中的 jpype.startJVM用来启动java虚拟机,-Djava.class.path 用来指定我们要调用的jar包。
- 在getsign中,jpype.JClass用来引用sign类,通过实例化并调用getSign实现版本号的比较。
- jpype.shutdownJVM()是主动关闭java虚拟机,释放资源。
本文来自博客园,作者:青城杂文录,转载请注明原文链接:https://www.cnblogs.com/chenyq/p/16874006.html