欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Jpype实现python调用java程序

程序员文章站 2022-03-19 16:01:35
有时需要在 Python 项目中利用既有的 Java 代码,已达到节省时间和开发成本的目的。JPype 是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足。1、环境配置 Linux操作系统、jdk1.6、python3.7.5、Jpype0.6; jdk配置上一篇文章已经讲过,python3安装也比较简单,这里着重强调Jpype的版本问题。由于Jpype相当于java和pytho......

        有时需要在 Python 项目中利用既有的 Java 代码,已达到节省时间和开发成本的目的。JPype 是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足。

1、环境配置

       Linux操作系统、jdk1.6、python3.7.5、Jpype0.6;

       jdk配置上一篇文章已经讲过,python3安装也比较简单,这里着重强调Jpype的版本问题。由于Jpype相当于java和python之间的桥梁,因此需要同时兼容两个版本的环境配置,Jpype0.6以下版本支持jdk1.6但是不支持python3版本,Jpype安装比较简单,官网根据Release history找到对应版本,直接复制给定的命令运行即可(注意python3+需要pip3命令,而不是pip)。

2、编写java程序并打包成jar包

       编写程序Hello.java:

public class Hello {
    public void myPrint(){
        System.out.println("Hello,I am java");
    }
}

      命令行打包:

javac Hello.java #编译生成.class文件

jar -cvfe hw.jar Hello Hello.class  #打包java的方式很多,这里直接用-e参数指定main函数入口,生成hw.jar包,具体可通过jar --help查看使用方法

java -jar hw.jar  #运行

     这时目录下会有三个文件:Hello.java  Hello.class  hw.jar

3、编写python程序

import jpype 
jvmPath = jpype.getDefaultJVMPath()  #启动java虚拟机
jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=./hw.jar") #jar包路径
JClass = jpype.JClass('Hello') #获取类,输入参数为类的路径
instance = JClass()  #实例化为对象
instance.myPrint()  #调用java函数,打印结果
jpype.shutdownJVM() #关闭虚拟机

      执行成功:

[***@localhost pypro]$ python3 test.py
Hello,I am java
JVM activity report     :
	classes loaded       : 20
JVM has been shutdown

 

本文地址:https://blog.csdn.net/Amaris_1997/article/details/111941970

相关标签: python java jar