国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

JPype實現在python中調用JAVA的實例

2019-11-25 16:00:33
字體:
來源:轉載
供稿:網友

一、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的系統屬性

有時,某些 Java 應用需要設置或者獲取 JVM 中的系統屬性。

  1. 在 JVM 啟動時設置系統變量示例:
  2. 在 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))

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永州市| 五大连池市| 望谟县| 遂平县| 永胜县| 岳西县| 江西省| 宝兴县| 措勤县| 盐山县| 苍南县| 沂水县| 监利县| 南雄市| 商水县| 龙川县| 手游| 建水县| 定安县| 三亚市| 白沙| 隆回县| 出国| 盱眙县| 古蔺县| 贺兰县| 公主岭市| 衡南县| 石渠县| 清镇市| 麻阳| 乌鲁木齐市| 海淀区| 罗江县| 峡江县| 内丘县| 慈溪市| 汾阳市| 大余县| 甘洛县| 鹤壁市|