本篇文章主要介紹了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擴充包
- 很多時候,在 python 專案中需要呼叫第三方的 Java 擴充包,這也是 JPype 的一個重要用途。 透過在 JVM 啟動參數增加:-Djava.class.path=ext_classpath,實作在 python 程式碼中呼叫現有的 Java 擴充包。
4.存取JAVA的系統屬性
在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中文網其他相關文章!

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境