python与java互相调用发现最常用的就是jpype了
网上大部分用的都是jpype
不过pyspark用的是py4j
jpype
我是python3.6环境
pip install jpype1
from jpype import *
startJVM(getDefaultJVMPath(), "-ea")
res = java.lang.Math.abs(3)
print(3)
shutdownJVM()
jpype是基于内存交互的,也就是说你家在一个类以后,这个类的静态变量是一直变化的
我们用java开发一个java的maven工程,打一个jar包demo-1.0-SNAPSHOT.jar,包含如下一个方法
package demo;
public class Demo {
public static int i =1;
public static void add(){
i++;
System.out.println(i);
}
}
from jpype import *
import os
startJVM(getDefaultJVMPath(),"-ea","-Djava.class.path=/home/demo-1.0-SNAPSHOT.jar")
Demo = JClass("demo.Demo")
d = Demo()
res = d.add()
print(res)
输出为2
res = d.add()
print(res)
输出为3,每执行一次都加1