在python程式中呼叫java程式碼

新夢想IT發表於2022-08-26


Python 是一門 “膠水”語言,非常靈活多變,但是在一些特殊的時候,也需要呼叫其它語言來協助實現更多的功能;在公司使用python進行 介面測試 的時候,會遇到有些介面資料是由公司的開發人員進行自定義的加密演算法進行加密的,此時,要開發告訴加密程式碼是不太可能的。跟開發小哥溝通時,很多時候都是由他給一個 jar包,然後剩下的就由測試人員來發揮了。

python 該如何使用這個jar包呢?

這裡給大家介紹的是 jpype;

一、什麼是 Jpype

JPype是一個能夠讓 python 程式碼方便地呼叫 Java 程式碼的工具;

 

二、安裝 Jpype

pip install jpype1 (注意:是jpype1哦,這個1請一定不要忘記)

 

三、 Jpype的使用流程

Jpype是給python程式設計師來使用的。他能呼叫啟jar包,其實還是要去啟用jvm來對java程式碼進行執行;所以請確保你的jdk正確安裝並配置好環境變數。
基本流程:

①、使用jpype開啟jvm

②、載入java類

③、呼叫java方法

④、關閉jvm(不是真正意義上的關閉,解除安裝之前載入的類)

舉例說明:

1、先寫好java程式碼,並生成jar包;

package com.pyjava.demo;

 

    public class Demo1 {

 

     public int add(int a ,int b) {

    return a+b;

       }

    }

     匯出成jar包:pyjava.jar

    2、使用Jpype程式碼:

    import jpype

    import os

    jarpath = os.path.join(os.path.abspath('.'), '//Users//luoman//file//pyjava.jar')  #定義變數引用jar包的路徑

    # 1、開啟jvm

    jvmpath = jpype.get_default_jvm_path() #獲取jvm的路徑,一般情況下由此函式獲取就可以

    jpype.startJVM(jvmpath, "-ea", "-Djava.class.path=%s" % (jarpath))  # 使用startJvm()函式 啟動jvm  

    # 2、載入java類

    javaclass = jpype.JClass("com.pyjava.demo.Demo1") # 此處要寫長類名(包名.類名)

    # 3、呼叫java方法

    jc = javaclass()   #定義java物件

    sum = jc.add(3,4)  #呼叫jar包中的函式

    print('兩數之和為:',sum)

    # 4、關閉jvm

    jpype.shutdownJVM()

     執行結果:兩數之和為:7

 

     也可以直接呼叫java的api,比如呼叫java的標準輸出語句:

    java.lang.System.out.println("helloworld")

 

四、startJVM() 函式詳細說明 

            startJVM() 函式的作用是啟動 JAVA 虛擬機器 

            jpype.startJVM() 的定義 

                startJVM(jvm, *args) 

            引數說明:

            jvm:描述你係統中 jvm.dll 檔案所在的路徑,可以直接使用get_default_jvm_path()函式獲取預設路徑,或者寫jvm.dll的絕對路徑也可以

            *args:為可選引數,只要是合法的jvm啟動引數都可以(大家可以百度一下jvm的啟動引數) 

            "-Djava.class.path=%s"  % (jarpath) 此處是引用jar包,如果有多個jar包要引用的話可以這麼寫: 

            -Djava.class.path=%s,%s,%s " % (jarpath1,jarpath2,jarpath3)

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2912208/,如需轉載,請註明出處,否則將追究法律責任。

相關文章