首頁 後端開發 Python教學 python中如何使用JPype實作呼叫java的實例分享

python中如何使用JPype實作呼叫java的實例分享

May 25, 2018 pm 04:14 PM
python 實現

本篇文章主要介紹了JPype實作在python中呼叫JAVA的實例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

一、JPype簡述

1.JPype是什麼?

JPype是一個能夠讓 python 程式碼方便地呼叫 Java 程式碼的工具,從而克服了 python 在某些領域(如伺服器端程式設計)中的不足。

2.JPype與Jython(JPython後繼者)的差別?

1)運作環境不同:jython運作在jvm上,而JPype的實際運作環境仍然是python runtime,只是在運作期間啟動了一個嵌入的jvm;

  2 )使用者不同:jython是給java程式玩的,JPype是給python程式設計師玩的。

二、JPype安裝

# 1.先安裝Python2.7與JAVA1.6

 2.安裝JPype- 0.5.4.2.win32-py2.7.exe(http://sourceforge.net/projects/jpype/files/JPype/0.5.4/)

# 3.Ubuntu12.04安裝指令:sudo apt- get install python-jpype

三、JPype使用說明

 1.啟動JVM


## JPype 提供的startJVM() 函數的作用是啟動JAVA 虛擬機,所以在後續的任何JAVA 程式碼被呼叫之前,必須先呼叫此方法啟動JAVA 虛擬機。 jpype.startJVM() 的定義 

startJVM(jvm, *args)
登入後複製

jpype.startJVM() 的參數

參數1: jvm, 描述你係統中jvm.dll 檔案所在的路徑,如「 C:\Program Files\IBM\Java50\jre\bin\j9vm\jvm.dll 」。可以透過呼叫 jpype.getDefaultJVMPath() 來得到預設的 JVM 路徑。

參數 2: args, 為選用參數,會被 JPype 直接傳遞給 JVM 作為 Java 虛擬機器的啟動參數。這裡適合所有合法的JVM 啟動參數,例如:

 -agentlib:libname[=options] 
 -classpath classpath 
 -verbose 
 -Xint
登入後複製

 2.關閉JVM

當使用完JVM 後,可以透過jpype.shutdownJVM() 關閉JVM,函數沒有輸入參數。當 python 程式退出時,JVM 會自動關閉。

3.引用第三方Java擴充包

  1. 很多時候,在 python 專案中需要呼叫第三方的 Java 擴充包,這也是 JPype 的一個重要用途。

    透過在 JVM 啟動參數增加:-Djava.class.path=ext_classpath,實作在 python 程式碼中呼叫現有的 Java 擴充包。
  2.  4.存取JAVA的系統屬性

有時,某些 Java 應用程式需要設定或取得 JVM 中的系統屬性。

在JVM 啟動時設定係統變數範例:

#在JVM 的啟動參數中加入以下參數:

-Dproperty=value
登入後複製

四、舉例

1.直接呼叫JAVA API

from jpype import * 
import os.path 
startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll", "-ea") 
java.lang.System.out.println("hello World") 
shutdownJVM()
登入後複製

2.呼叫JAVA第三方擴充包

1)JAVA自訂第三方jar套件:將JpypeDemo類別打包為jpypedemo.jar檔案並儲存到F:/sample_Py目錄下

package jpype; 
 
public class JpypeDemo { 
public String sayHello(String user){ 
return "hello" + user; 
} 
public int calc(int a, int b){ 
return a + b;  
} 
}
登入後複製

  2)Python呼叫第三方JAVA jar套件程式# ##
from jpype import * 
import os.path 
jarpath = os.path.join(os.path.abspath('.'), 'F:/sample_Py/') 
startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll","-ea", "-Djava.class.path=%s" % (jarpath + 'jpypedemo.jar')) 
#ubuntu 中startJVM("/home/geek/Android/jdk1.6.0_43/jre/lib/i386/server/libjvm.so","-ea", "-Djava.class.path=%s" % (jarpath + 'XXX.jar')) 
JDClass = JClass("jpype.JpypeDemo") 
jd = JDClass() 
#jd = JPackage("jpype").JpypeDemo() #两种创建jd的方法 
jprint = java.lang.System.out.println 
jprint(jd.sayHello("waw")) 
jprint(jd.calc(2,4)) 
shutdownJVM()
登入後複製
###3.存取JAVA的系統屬性###### 假設你要設定的屬性名為yourProperty,屬性值為yourValue 。 ######1)JVM啟動時設定係統變數範例###
import jpype 
 jvmPath = jpype.getDefaultJVMPath() 
 jvmArg = “ -DyourProperty=yourValue ”
 if not jpype.isJVMStarted(): 
  jpype.startJVM(jvmPath,jvmArg)
登入後複製
###2)在程式中設定係統變數範例###
import jpype 
 prop = “ yourProperty ”
 value = “ yourValue ”
 system = jpype.JClass('java.lang.System') 
 system.setProperty(str(prop),str(value))
登入後複製
###3)在程式中取得系統變數範例###
import jpype 
 prop = “ yourProperty ”
 system = jpype.JClass('java.lang.System') 
 value = system.getProperty(str(prop))
登入後複製

以上是python中如何使用JPype實作呼叫java的實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles