一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python如何調用java類

python如何調用java類

2020-07-06 09:46愛喝馬黛茶的安東尼 Python

在本篇文章里小編給大家分享了關于python調用java類的方法,需要的朋友們可以參考下。

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

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

安裝 jpype

python 調用 java 主要是靠在 python 中 import jpype 來實現的。

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

?
1
2
3
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 中執行:

?
1
2
3
#python
>>>import jpype
>>>

Jpype 安裝完成。

利用 Jpype 調用 Java

我們就簡單調用 java 中自定義函數來舉例:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class JpypeDemo {
 
  public static String sayHello(String user){ //注意!作為被 python調用的接口函數,需要是靜態的,否則 python
  端會報錯
    return "hello" + user;
  }
  public static int calc(int a, int b){  //注意!作為被 python 調用的接口函數,需要是靜態的,否則 python
  端會報錯
    return a + b;
  }
  public static void main(String[] args){
  }
}

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

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

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

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

?
1
2
3
4
5
6
7
JDClass = JClass("JpypeDemo")    #申請一個 Java 類(神奇~)
jd = JDClass
jprint = java.lang.System.out.println #申請 Java 輸出類的輸出函數
jprint( jd.sayHello(" waw ") )   #調用該類中的 sayHello 函數,并用 Java 輸出函數打印 Java 返回值
jprint( jd.calc(2, 4) )    #調用該類中的求和函數,并用 Java 輸出函數打印 Java 返回值
#關閉 Java 虛擬機,可寫可不寫,不寫會在程序結束時自動關閉
shutdownJVM()

執行上述程序,得到輸出:

hello waw

6

JVM activity report:

classes loaded: 32

JVM has been shutdown

內容擴展:

python調用java的jar包方法

?
1
2
3
4
5
6
7
8
9
10
11
from jpype import *
jvmPath = getDefaultJVMPath()
 
jars = ["./Firstmaven-1.0-SNAPSHOT-jar-with-dependencies.jar"]jvm_cp = "-Djava.class.path={}".format(":".join(jars))
startJVM(jvmPath,jvm_cp)
sedisObj = JClass("LogBack")
so = sedisObj()
print so.get_v('name0')
print so
print so.get_int()
shutdownJVM()

到此這篇關于python如何調用java類的文章就介紹到這了,更多相關python調用java類的方法內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.py.cn/faq/python/14411.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 手机看片国产免费久久网 | 欧美日韩精品乱国产 | 精品国产剧情在线观看 | 美女任你摸| 国产亚洲精品福利在线 | 校园刺激全黄H全肉细节文 校草让我脱了内裤给全班看 | 精品国产一级毛片大全 | 国产精品久久久久久五月尺 | 国产剧情在线播放 | 久久观看视频 | 91久久精品国产一区二区 | poren18日本老师hd | 欧美日韩精品一区二区三区视频 | 亚洲精品午夜久久aaa级久久久 | 国产无套在线播放 | 91gmail国产| 91精品乱码一区二区三区 | 四虎成人免费观看在线网址 | 免费人成在线观看69式小视频 | 青青国产精品 | oneday日本在线观看完整版 | 拍拍叫痛的无挡视频免费 | 四虎黄色影视 | 欧美日韩视频在线成人 | 亚洲国产精品久久久久久 | 秘书喂奶好爽一边 | 大又大又粗又爽女人毛片 | 999jjj在线播放 | 热99re久久精品国产首页 | 希岛爱理作品在线观看 | 鄂州一家三口完整版免费 | 欧美成人精品福利在线视频 | 成人免费播放器 | 免费国产成人α片 | 精品欧美一区二区三区四区 | 久久AV国产麻豆HD真实 | 欧美综合亚洲图片综合区 | 高清国产精品久久 | 亚洲国产精品第一页 | 日日夜夜撸影院 | 荡女淫春2未删减版 |