最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)用jar包方法實(shí)現(xiàn)過(guò)程解析

 更新時(shí)間:2020年08月11日 15:37:26   作者:天外歸云  
這篇文章主要介紹了Python調(diào)用jar包方法實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

需求

最近在后臺(tái)項(xiàng)目代碼中一段自定義的AES加解密的程序在平時(shí)的測(cè)試工作中應(yīng)用頻繁。因?yàn)閷懩_本經(jīng)常會(huì)需要使用,而經(jīng)過(guò)各種嘗試,比如jpype等,都不盡如人意。最后轉(zhuǎn)換思路找到了一種好方法:

1. 將java項(xiàng)目打成jar包;

2. 設(shè)定jar包的Main-class屬性;

3. 在python中通過(guò)subprocess執(zhí)行jar包。

修改main函數(shù)打jar包

在intellij中打jar包:

1. File--> Project Structure... --> Artifacts --> + --> JAR --> From modules with dependencies --> OK --> 勾選Include in project build --> 記錄上方Output directory路徑 --> OK;

2. Build --> Build Project --> 之后就可以在Output directory路徑看到打的jar包了;

3. 用WinRAR打開jar包,修改其中META-INF文件夾下的MANIFEST.MF文件,增加一行Main-class入口,例如:"Main-class: com.package.name.Classname",注意冒號(hào)后面空一格,文件最后空一行。

注意:執(zhí)行jar包就是執(zhí)行jar包的Main-class中的main函數(shù)。所以如果要在python中調(diào)用java方法并傳參的話,要在打jar包前修改Main-class中的main方法,Main-class也就是目標(biāo)java類。

在Main-class的main函數(shù)中可以設(shè)置傳參:

String data= args[0];
String key = args[1];
// 調(diào)用解密程序并打印解密結(jié)果

這里data是密文,key是密鑰。

編寫python腳本

然后對(duì)應(yīng)寫python腳本,這里設(shè)定python文件名為aes.py,假定我們用來(lái)解密的jar包名為aes.jar:

import subprocess
import chardet
import sys

class AES(object):
  def __init__(self, data, key):
    self.data = data
    self.key = key

  def decrypt(self):    
    command = "java -jar aes.jar"
    arg0 = self.data
    arg1 = self.key
    cmd = [command,arg0,arg1]
    new_cmd = " ".join(cmd)
    stdout,stderr = subprocess.Popen(new_cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()
    encoding = chardet.detect(stdout)["encoding"]
    result = stdout.decode(encoding)
    return result

if __name__ == '__main__':
  data = sys.argv[1]
  key = sys.argv[2]
  AES = AES(data,key)
  print(AES.decrypt())

這里為了與jar包的兩個(gè)傳參相對(duì)應(yīng)也設(shè)置python腳本需要傳入兩個(gè)參數(shù),第一個(gè)是待解密的數(shù)據(jù)data,第二個(gè)是解密鑰匙key。

這里我們創(chuàng)建一個(gè)文件夾aes,將aes.py和aes.jar放到該文件夾下,二者同處于aes根目錄下。

然后在當(dāng)前目錄下啟動(dòng)cmd,執(zhí)行python腳本,傳入data和key兩個(gè)參數(shù)給python腳本:

python aes.py "待解密的字符串" "密鑰"

在python腳本會(huì)將這兩個(gè)參數(shù)再傳遞給jar包并調(diào)用jar包Main-class的main函數(shù)中調(diào)用解密過(guò)程并打印解密結(jié)果。

這樣就可以在python中調(diào)用java的解密程序,從而打印出解密后的字符串了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)兩款計(jì)算器功能示例

    Python實(shí)現(xiàn)兩款計(jì)算器功能示例

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)兩款計(jì)算器功能示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python機(jī)器學(xué)習(xí)入門(二)之Python數(shù)據(jù)理解

    Python機(jī)器學(xué)習(xí)入門(二)之Python數(shù)據(jù)理解

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)詳解

    python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)詳解

    眾所周知python是一個(gè)很強(qiáng)大的語(yǔ)言,它擁有眾多的庫(kù),今天我嘗試了使用python進(jìn)行驗(yàn)證碼的識(shí)別,下面這篇文章主要給大家介紹了關(guān)于python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 詳解Python類的定義與實(shí)例

    詳解Python類的定義與實(shí)例

    這篇文章給大家介紹Python類的定義與實(shí)例,下面是一個(gè)使用?NewSpaceGraph?類的示例,展示了如何實(shí)例化該類并調(diào)用其方法,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Python內(nèi)置模塊Collections的使用教程詳解

    Python內(nèi)置模塊Collections的使用教程詳解

    collections 是 Python 的一個(gè)內(nèi)置模塊,所謂內(nèi)置模塊的意思是指 Python 內(nèi)部封裝好的模塊,無(wú)需安裝即可直接使用。本文將詳解介紹Collections的使用方式,需要的可以參考一下
    2022-03-03
  • Python中str is not callable問(wèn)題詳解及解決辦法

    Python中str is not callable問(wèn)題詳解及解決辦法

    這篇文章主要介紹了Python中str is not callable問(wèn)題詳解及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 簡(jiǎn)述 Python 的類和對(duì)象

    簡(jiǎn)述 Python 的類和對(duì)象

    這篇文章主要介紹了Python 的類和對(duì)象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • Django CBV模型源碼運(yùn)行流程詳解

    Django CBV模型源碼運(yùn)行流程詳解

    這篇文章主要介紹了Django CBV模型源碼運(yùn)行流程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python實(shí)現(xiàn)播放和錄制聲音的功能

    Python實(shí)現(xiàn)播放和錄制聲音的功能

    這篇文章主要介紹了Python實(shí)現(xiàn)播放和錄制聲音的功能,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • PyTorch簡(jiǎn)單手寫數(shù)字識(shí)別的實(shí)現(xiàn)過(guò)程

    PyTorch簡(jiǎn)單手寫數(shù)字識(shí)別的實(shí)現(xiàn)過(guò)程

    Pytorch是熱門的深度學(xué)習(xí)框架之一,通過(guò)經(jīng)典的MNIST數(shù)據(jù)集進(jìn)行快速的pytorch入門,這篇文章主要給大家介紹了關(guān)于PyTorch簡(jiǎn)單手寫數(shù)字識(shí)別的相關(guān)資料,需要的朋友可以參考下
    2021-11-11

最新評(píng)論

柞水县| 岚皋县| 游戏| 兴义市| 牡丹江市| 博罗县| 祁东县| 若尔盖县| 大田县| 明溪县| 三明市| 贺州市| 南溪县| 上思县| 五华县| 措勤县| 凤台县| 清流县| 长沙市| 涞源县| 青田县| 托克逊县| 寻乌县| 大宁县| 高州市| 阜康市| 安康市| 大荔县| 合作市| 营口市| 洪泽县| 松潘县| 彭水| 周口市| 郎溪县| 女性| 纳雍县| 周宁县| 加查县| 镇沅| 贵南县|