环境:
安装:``pip install jpype1`
编写java代码
import java.io.IOException;
import java.math.BigInteger;
public class JPypeDemo {
# 生成一个搜索id
public static String searchId() {
long currentTimeMillis = System.currentTimeMillis();
System.out.println(currentTimeMillis);
long n = (long)(Math.random() * 9.223372036854776E18D);
byte[] array = new byte[16];
for (int i = 0; i <= 7; i++) {
int n2 = 56 - (i << 3);
array[i] = (byte)(int)((currentTimeMillis & Long.MAX_VALUE) >>> n2);
array[i + 8] = (byte)(int)((n & Long.MAX_VALUE) >>> n2);
}
return (new BigInteger(array)).toString(36);
}
public static void main(String[] args) throws IOException {
String s = searchId();
System.out.println(s);
}
}
编译java代码
javac JPypeDemo.java (JPypeDemo.java 文件名)# 生成class文件
jar cvf JPypeDemo.jar JPypeDemo.class # 生成jar包
编写python调用代码
from jpype import *
import os
if __name__ == "__main__":
# 启动java虚拟机
# 注意使用了-D选项指定了jar的目标位置
print("-Djava.class.path=%s" % (os.getcwd() + "/JPypeDemo.jar"))
startJVM(getDefaultJVMPath(), "-ea",
"-Djava.class.path=%s" % (os.getcwd() + "/JPypeDemo.jar"))
# 加载自定义的java class
JDClass = JClass("JPypeDemo")
jd = JDClass()
# 获取java标准库打印函数
jprint = java.lang.System.out.println
# 调用自定义class中的函数,并输出返回值
search_id = jd.searchId()
print(search_id)
# jprint(jd.calc(1, 4))
# 关闭虚拟机
shutdownJVM()
至此完成了一个简单的python调用java代码生成一个随机的searchid的方法就完成了。