新聞中心
python怎么調(diào)用java程序
把java封裝成restful接口,然后python通過遠(yuǎn)程調(diào)用數(shù)據(jù)。
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
使用Pyjnius這個python庫。
#源代碼:github點抗 /kivy/pyjnius
#文檔:pyjnius.readthedocs.org
#也有其他一些的庫,如?JPype?或?Py4j?,它們在設(shè)計和可用性方面都不是很好。而使用?Jython也不為另一種選擇,因為我們想使用?python開發(fā)Android項目。
#現(xiàn)在就讓我來告訴你,如何簡單的使用Pyjnius:
from?jnius?import?autoclass??
Stack?=?autoclass('java.util.Stack')??
stack?=?Stack()??
stack.push('hello')??
stack.push('world')??
stack.pop()??
'world'?
stack.pop()??
'hello'
python調(diào)用的java進(jìn)程在哪看
python調(diào)用的java進(jìn)程在哪看?
最近在做基于python的locust壓力測試,api接口程序是java版本,導(dǎo)致python無法匹配簽名模式,需要python調(diào)用java的簽名程序。
首先需要按照python依賴包
pip install jpype1
jpype調(diào)用jar包
jpype的原理是在python進(jìn)程中嵌入了java虛擬機(jī),并與虛擬機(jī)進(jìn)行通信。
復(fù)制代碼
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()
復(fù)制代碼
代碼說明如下:
需要提供java.jar,如果只有java程序,那需要先打成一個jar包來給python引
init_jvm函數(shù)中的 jpype.startJVM用來啟動java虛擬機(jī),-Djava.class.path 用來指定我們要調(diào)用的jar包。
在getsign中,jpype.JClass用來引用sign類,通過實例化并調(diào)用getSign實現(xiàn)版本號的比較。
jpype.shutdownJVM()是主動關(guān)閉java虛擬機(jī),釋放資源。
在java代碼中調(diào)用python并傳遞參數(shù)
需要用到需要用到j(luò)ython.jar
java example:
public static void main(String[] args) {
//定義參數(shù)
String[] args2 = {"arg1","arg2"};
//設(shè)置參數(shù)
PythonInterpreter.initialize(null, null, args2);
PythonInterpreter interpreter = new PythonInterpreter();
//執(zhí)行
interpreter.execfile("E:\\jython.py");
System.out.println("----------run over!----------");
}
python的程序:
#!/bin/env python
import time
import sys
argCount = len(sys.argv)
print('before sleep')
time.sleep(5);
print('after sleep')
for str in sys.argv:
print(str)
分享標(biāo)題:python調(diào)用java代碼 python怎么調(diào)用java
URL標(biāo)題:http://www.ef60e0e.cn/article/ddchjii.html