Python使用jpype模組呼叫jar包過程解析

2022-10-04 13:48:26 字數 1709 閱讀 3167

一、jpype模組是什麼?

能夠讓 python **方便地呼叫 j**a **的工具

二、jpype模組安裝

安裝和其它模組沒區別,但是注意模組名 是 jpype1 ,後面有個1

pip install jpype1

三、jpype模組應用(macos下)

筆者在標題裡面備註了所使用的作業系統www.cppcns.com,因為windows作業系統的乙個配置有點區別,待會遇到再講解吧。

3.1 jpype模組測試

import jpype

# getdefaultjvmpath 獲取預設的 jvm 路徑

jvm_path = jpype.getdefaultjvmpath()

# startjvm()啟動 j**a 虛擬機器

jpype.startjvm(jvm_path,'-ea',convertstrings=false)

# 利用jpype呼叫輸出語句

jpype.j**a.langwww.cppcns.com.system.out.println('success')

# shutdownjvm()關閉j**a虛擬機器

jpype.shutdownjvm()

在上面**中,如果你成功輸出hello,說明環境安裝配置成功了。

其中 jpype.startjvm() 的定義是

startjvm(jvm, *args)

引數 jvm, 描述的是系統中 jvm.dll 檔案所在的路徑,可以通過呼叫 jpype.getdefaultjvmpath() 得到預設的 jvm 路徑。

引數 2: args, 為可選引數,會被 jpype 直接傳遞給 jvm 作為 j**a 虛擬機器的啟動引數。此處適合所有合法的 jvm 啟動引數,例

如:常用為-ea啟動斷言機制、-dj**a.class.path呼叫的jar包路徑、-dj**a.ext.dirs呼叫jar包的依賴包目錄等

3.2 jpype模組呼叫jar包

第一步:編寫j**a乙個類,用eclipse等工具編寫,**如下:

package com.newdream;

//簡單的乙個j**a類

public class calc

public int add()

public int sub()

}第二步:通過在eclipse中右擊該類,點選export匯出為jar包格式

第三步:把jar包放到python專案下後,編寫**如下即可呼叫:

import jpype

jvm_path = jpype.getdefaultjvmpath()

jpype.startjvm(jvm_path,

'-ea',

'-dj**a.class.path=%s'%'./libs/calc.jar',

convertstrings=false)

jclass = jpype.jclass('com.newdream.calc') #載入類

calc = jclass(10,20) #傳入所需引數

value = calc.add() #呼叫類中的add方法

print(value)

jpype.shutdownjvm() #關閉j**a虛擬機器

以上即可完成呼叫jar包。

本文標題: python使用jpype模組呼叫jar包過程解析

本文位址: /jiaoben/python/328391.html

python模組使用 python 模組發布及使用

將模組 此處名為nester 寫好後,與setup.py放入同乙個資料夾中 from distutils.core importsetup setup name 發布名,一般同模組名 version 版本號 py modules 模組列表 引數,其他引數根據需求新增 構建發布檔案 在資料夾下開啟終端...

Python使用模組Pyserial模組報

用pip安裝pyserial後 sudo h pip install pyserial,執行新建的程式,名稱為serial.py,程式中用到 import serial.toos.list ports,但總是提示importerror no module named tools.list ports...

python模組使用 python的模組使用

模組是python組織 的基本方式。乙個python指令碼可以單獨執行,也可以匯入到另乙個指令碼中執行,當指令碼被匯入執行時,我們將其稱為模組 module 所有的.py檔案都可以作為乙個模組匯入 模組名與指令碼的檔名相同 例如我們編寫了乙個名為hello.py的指令碼,則可以在另乙個指令碼中用im...