亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python調(diào)用Jar包的兩種方式小結(jié)

 更新時間:2022年12月08日 10:19:26   作者:Wintersee  
這篇文章主要介紹了Python調(diào)用Jar包的兩種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

概覽

因工作場景,需要在python代碼里調(diào)用Jar包來實現(xiàn)一些功能,調(diào)研下來主要有兩種方式:

  • java -jar xx.jar
  • JPype

環(huán)境配置

因為要在公司內(nèi)網(wǎng)操作,所以需要通過離線方式進行安裝。環(huán)境用的是一個Centos7.7的docker鏡像。

安裝JDK

主要有三種方式:

  • 1. 通過yum源安裝
  • 2. rpm安裝
  • 3. 解壓JDK安裝包手動安裝

第一種方式需要聯(lián)網(wǎng)或者配置內(nèi)網(wǎng)的yum源

第三種方式比較繁瑣且需要配置環(huán)境變量,相較而言第二種方式比較適合我這一次的場景

具體安裝細(xì)節(jié)不再贅述,詳情可參考這篇文章:CentOS安裝jdk的幾種方法及配置環(huán)境變量

安裝JPype(如需要)

同樣的,可以通過pip直接在線安裝,也可以通過python setup.py install或者pip install xx.whl離線安裝,可參考Python安裝包的三種方式

JPype安裝包和文檔可以通過官方github 或者官方PyPi獲取。

調(diào)用示例

java -jar

import os
import subprocess
import jpype
import time

def query_by_java_jar(jar_path, param):
? ? execute = "java -jar {} '{}'".format(jar_path, param)
? ? # print(execute)
? ? output = subprocess.Popen(execute, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
? ? res = output.stdout.readlines()
? ? return res

JPype

import os
import subprocess
import jpype
import time

def query_by_jpype(jar_path, some_param):
? ? if not jpype.isJVMStarted():
? ? ? ? jpype.startJVM(classpath=[jar_path])
? ? if not jpype.isThreadAttachedToJVM():
? ? ? ? jpype.attachThreadToJVM()
? ? try:
? ? ? ? java_class = jpype.JClass('com.xxx.xxx')
? ? ? ? result = java_class.someStaticFunction(some_param)
? ? except Exception as e:
? ? ? ? print(e)
? ? ? ? result = None
? ? finally:
? ? ? ? #jpype.shutdownJVM()
? ? ? ? return result

再多說一點

關(guān)于JPype

  • 具體的使用場景和方法,可參考Github里的UserGuide
  • shutdown之后再start報錯:OSError: JVM cannot be restarted

這是JPype的一個使用限制,為防止內(nèi)存泄漏的,同一進程內(nèi)關(guān)閉JVM后無法再次啟動。

可考慮將調(diào)用方法寫入到一個Python腳本,然后通過subprocess去調(diào)用。

官方解釋此處也在貼一下:

JPype Known limitations

Restarting the JVM

JPype caches many resources to the JVM. Those resource are still allocated after the JVM is shutdown as there are still Python objects that point to those resources. If the JVM is restarted, those stale Python objects will be in a broken state and the new JVM instance will obtain the references to these resulting in a memory leak. Thus it is not possible to start the JVM after it has been shut down with the current implementation.

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計示例

    Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計示例

    這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計,結(jié)合實例形式較為詳細(xì)的分析了Python針對雙色球藍(lán)紅球中獎數(shù)據(jù)分析的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 將Python腳本通過Wooey轉(zhuǎn)化為Web應(yīng)用的簡易解決方案

    將Python腳本通過Wooey轉(zhuǎn)化為Web應(yīng)用的簡易解決方案

    Wooey 是一個開源的 Python 項目,旨在幫助開發(fā)者快速將 Python 腳本轉(zhuǎn)化為用戶友好的 Web 應(yīng)用程序,在本文中,我們將詳細(xì)介紹 Wooey 的功能、安裝與配置方法,并展示如何將一個 Python 腳本通過 Wooey 轉(zhuǎn)化為 Web 應(yīng)用,需要的朋友可以參考下
    2025-05-05
  • 對python實時得到鼠標(biāo)位置的示例講解

    對python實時得到鼠標(biāo)位置的示例講解

    今天小編就為大家分享一篇對python實時得到鼠標(biāo)位置的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 詳解Selenium如何使用input標(biāo)簽上傳文件完整流程

    詳解Selenium如何使用input標(biāo)簽上傳文件完整流程

    這篇文章主要介紹了詳解Selenium如何使用input標(biāo)簽上傳文件完整流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • python tkinter基本屬性詳解

    python tkinter基本屬性詳解

    這篇文章主要介紹了python tkinter基本屬性詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Python實現(xiàn)自動批量修改文件名稱

    Python實現(xiàn)自動批量修改文件名稱

    這篇文章主要為大家詳細(xì)介紹了如何基于Python語言,實現(xiàn)按照一定命名規(guī)則批量修改多個文件的文件名的效果,文中的示例代講解詳細(xì),感興趣的可以了解一下
    2023-01-01
  • 在Python?中將類對象序列化為JSON

    在Python?中將類對象序列化為JSON

    這篇文章主要介紹了在Python?中將類對象序列化為JSON,序列化是將對象轉(zhuǎn)換為可以在以后保存和檢索介質(zhì)中的過程,下文具體的內(nèi)容分享,需要的朋友可以參考一下
    2022-04-04
  • Python如何精準(zhǔn)判斷某個進程是否在運行

    Python如何精準(zhǔn)判斷某個進程是否在運行

    這篇文章主要為大家詳細(xì)介紹了Python如何精準(zhǔn)判斷某個進程是否在運行,本文為大家整理了3種方法并進行了對比,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • 關(guān)于Keras Dense層整理

    關(guān)于Keras Dense層整理

    這篇文章主要介紹了關(guān)于Keras Dense層整理,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python實現(xiàn)驗證碼識別

    Python實現(xiàn)驗證碼識別

    這篇文章主要介紹了Python實現(xiàn)驗證碼識別的方法,文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評論