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()

代码说明如下:

  1. 需要提供java.jar,如果只有java程序,那需要先打成一个jar包来给python引
  2. init_jvm函数中的 jpype.startJVM用来启动java虚拟机,-Djava.class.path 用来指定我们要调用的jar包。
  3. getsign中,jpype.JClass用来引用sign类,通过实例化并调用getSign实现版本号的比较。
  4. jpype.shutdownJVM()是主动关闭java虚拟机,释放资源。
posted @ 2022-11-09 16:01  青城杂文录  阅读(756)  评论(0编辑  收藏  举报