使用python调用java程序
使用python调用java程序非常简单。
首先机器上需要有python运行环境,此处不再赘述
1. 安装JPype1,使用这个模块的api调用java
pip3 install JPype1
2. 试一下hello world,此处使用本机自带的jdk。我们新建一个脚本,名为test.py,其内容如下
from jpype import * if __name__ = "__main__": startJVM(getDefaultJVMPath(), "ea") java.lang.System.out.println("Hello World!") shutdownJVM()
3. 运行脚本
python3 test.py
但是一般我们提供的java程序编译版本可能和机器上自带的jdk不是同一版本,这样运行就可能有问题。这时候可以下载程序对应的jdk,将其中的jre和程序一起提供,在调用时,指定我们提供的jre即可。此处以1.8版本的jre为例
from jpype import * if __name__ = "__main__": startJVM("/home/xxx/test/jre/lib/amd64/server/libjvm.so", "ea") java.lang.System.out.println("Hello World!") shutdownJVM()
以上示例只是演示了直接调用jdk中自带的类,那么大部分场景下,需要调用我们自己写的程序,这种应该如何调用呢?
假设我们java程序有个类为com.example.Main,其中定义了main方法,则调用方式如下,可以传入包含两个字符串的参数给main方法
from jpype import * if __name__ = "__main__": startJVM("/home/xxx/test/jre/lib/amd64/server/libjvm.so", "ea", "-Djava.class.path=/home/xxx/test/hello_world.jar") MainClass = JClass("com.example.Main") mc = MainClass() mc.main(["a", "b"]) shutdownJVM()