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