python調(diào)用java類的方法是什么

這篇文章主要介紹python調(diào)用java類的方法是什么,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了閩侯免費(fèi)建站歡迎大家使用!

由于 python 本身為腳本語言,且經(jīng)常存在調(diào)用第三方庫的情況,有的時候用 java 調(diào)用 python 不如用 python 調(diào)用 java 方便。下面就整理一下在 python 調(diào)用 java 過程中需要哪些操作。(默認(rèn)是 linux 的 Ubuntu 上調(diào)用)

首先 linux 上的 jdk 是一定需要安裝的,這個過程在這里就不表了,python 都是 linux 自帶的,這里默認(rèn)是 python2.7。

安裝 jpype

python 調(diào)用 java 主要是靠在 python 中 import jpype 來實現(xiàn)的。

jpype 的安裝極其容易,在 http://jpype.sourceforge.net/  中下載 JPype-0.5.4.2.zip 并將它放置到隨便一個文件夾下,筆者給放到了/home/UsrName/jpype/ 下面,然后在該文件夾下:

unzip Jpype-0.5.4.2.zip
cd Jpype-0.5.4.2
python setup.py install

就安裝完成了(如果有報 Permission denied 的錯誤,請把最后一個指令改為 sudo python setup.py install),此時可在 python 中執(zhí)行:

#python
>>>import jpype
>>>

Jpype 安裝完成。

利用 Jpype 調(diào)用 Java

我們就簡單調(diào)用 java 中自定義函數(shù)來舉例:

先附上簡單的 java 代碼,作用是給定字符串返回加工后的字符串,以及給定兩個參數(shù)返回兩數(shù)之和。

public class JpypeDemo {
    public static String sayHello(String user){  //注意!作為被 python調(diào)用的接口函數(shù),需要是靜態(tài)的,否則 python 
    端會報錯
        return "hello" + user;
    }
    public static int calc(int a, int b){    //注意!作為被 python 調(diào)用的接口函數(shù),需要是靜態(tài)的,否則 python 
    端會報錯
        return a + b;
    }
    public static void main(String[] args){  
    }
}

將其打包為 jar 文件,這里我將打包好的文件命名為 JpypeDemo.jar(不會打包的小伙伴請百度),并將其放置于 python 腳本所在的目錄下。

然后再給出 python 端使用 java 的 jar 包的代碼:

import jpype
from jpype import *
import os.path
jarpath = os.path.abspath('.')       #這個函數(shù)用來獲取當(dāng)前 python 腳本所在的絕對路徑
startJVM("/usr/local/java/jdk1.8.0_181/jre/lib/amd64/server/libjvm.so",  "-ea",  
"-Djava.class.path=%s" % (jarpath + '/JpypeDemo.jar'))

這個 startJVM 函數(shù)作用是加載 Java 虛擬機(jī),其第一個參數(shù)必須是你的 Java 的 jdk 的安裝位置,每個人的安裝位置不一樣,我的地址就是上面加粗的那一段(注?。。∮械慕坛躺险f可以直接通過 getDefaultJVMPath() 函數(shù)獲取 Java 地址,不建議用!不建議用!不建議用!因為這個函數(shù)獲得的地址很有可能是電腦自帶的 oracle 版的 Java,并非我們自己安裝的 Java,這樣由于環(huán)境變量的問題會導(dǎo)致報錯!);  第二個參數(shù)意譯不明,反正加上就對了 ;  第三個參數(shù)是你打包好的 jar 包所在的絕對路徑,可以看到我將 JpypeDemo.jar 和前面所得到的當(dāng)前目錄的路徑結(jié)合起來。

JDClass = JClass("JpypeDemo")       #申請一個 Java 類(神奇~)
jd = JDClass
jprint = java.lang.System.out.println  #申請 Java 輸出類的輸出函數(shù)
jprint( jd.sayHello(" waw ") )      #調(diào)用該類中的 sayHello 函數(shù),并用 Java 輸出函數(shù)打印 Java 返回值
jprint( jd.calc(2, 4) )        #調(diào)用該類中的求和函數(shù),并用 Java 輸出函數(shù)打印 Java 返回值
#關(guān)閉 Java 虛擬機(jī),可寫可不寫,不寫會在程序結(jié)束時自動關(guān)閉
shutdownJVM()

執(zhí)行上述程序,得到輸出:

hello waw
6
JVM activity report:
    classes loaded: 32
JVM has been shutdown

于是我們就可以快樂的在 python 中使用 Java 了。

以上是python調(diào)用java類的方法是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享名稱:python調(diào)用java類的方法是什么
標(biāo)題URL:http://muchs.cn/article46/ihdpeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、軟件開發(fā)網(wǎng)頁設(shè)計公司、用戶體驗網(wǎng)站導(dǎo)航、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司