使用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()

 

posted @ 2022-08-12 14:50  到三国卖栗子  阅读(3573)  评论(0编辑  收藏  举报