python怎么调用java程序

python怎么调用java程序,第1张

把java封装成行岩缺restful接口,然后python通过远程调用数据。

使用Pyjnius这个python库。

#源代码:github.com/kivy/pyjnius

#文档:pyjnius.readthedocs.org

#也有其他档辩一些的库,如 JPype 或 Py4j ,它们在设计和可用性方面都不是很好。而使用 Jython也不为另一种选择,因为我们想使用 python开发Android项目。

#现在就让我来告诉你,如何简单的使用Pyjnius:

>>> from jnius import autoclass  

>>> Stack = autoclass('java.util.Stack')  

>>> stack = Stack()  

>枣空>> stack.push('hello')  

>>> stack.push('world')  

>>> stack.pop()  

'world' 

>>> stack.pop()  

'hello'

java public class 要求类名首字母哗袭大写,芹芦颂文件和类嫌郑同名。

比如 Test.java

public class Test {

...

}

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://outofmemory.cn/yw/8223897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存