Python3 操作运行jpype库执行调用 java代码中的方法


JPype1

在软件开发过程中,有时需要在 Python 项目中利用既有的 Java 代码,已达到节省时间和开发成本的目的。因此,找到一个 Python 代码调用 Java 代码的桥梁是非常有意义的。 JPype 就是这样的一个第三方库,利用它可以使 Python 程序方便的调用 Java 代码,从而扩充 Python 语言的能力,弥补 Python 语言的不足。

 

一、下载安装。

pip3 install JPype1-py3   #python2.7 有自己单独的JPype1库,与python3的库不一致。

PS: 另外需要注意的点:

1、需要下载好JDK,且版本要大于1.7,配置好环境变量JAVA_HOME。

2、如果JDK 是64 Bit,python解释器要64Bit (或者都是32 Bit)版本不一致会导致JVM运行时内存泄漏报异常:Process finished with exit code -1073741819 (0xC0000005)

 

二、示例:

a 、定义Java Test类。更改文件名为.java后缀。

1、通过javac  xxx.java 可将java 文件编译成xxx.class文件。
2、通过jar cvf    xxxx(自定义命名).jar    xxx.class   可将.class 文件打包成jar包

 

public class Test{

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

    public int getSum(int a,int b){
        System.out.println("int");
        return a+b;
    }

    public String getString(String str){
        System.out.println("String");
        return str+"&&&&&"+str;
    }

}

 

b、JPype 操作使用:

import jpype


# 指定jar包位置, 或者.class文件
class_path = 'E:/SinaifMock/utils/Test.class'
jar_path = "E:\create_TestAccount/test.jar"

# JVM的路径位置
JVM_path = "E:/java/jdk1.8.0_121/jre/bin/server/jvm.dll"

# 开启JVM,且指定jar包, 或者.class文件位置
jpype.startJVM(JVM_path, jar_path)

# 打印hello, word
jpype.java.lang.System.out.println("hello World")

# 引入java程序中的类.路径应该是项目中的package包路径.类名
javaClass = jpype.JClass('Test')

# 创建一个对象
javaInstance = javaClass()
# 执行类中的函数了
num = javaInstance.getSum(10, 20)
string = javaInstance.getString("getString")
print(num, string)

# 关闭JVM
jpype.shutdownJVM()

 

输出:

hello World
int
String
30 getString&&&&&getString
JVM activity report     :
	classes loaded       : 32
JVM has been shutdown

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM