壹、JPype簡介
什麽是1。JPype?
JPype是壹個工具,可以讓python代碼方便地調用Java代碼,從而克服python在某些領域的缺點,比如服務器端編程。
2.2有什麽區別。JPype和Jython(繼任者Jython(JPython)?
1)運行環境不同:jython運行在jvm上,而JPype的實際運行環境仍然是python運行時,只是在運行過程中啟動了壹個嵌入式JVM;
2)用戶不同:jython是針對java程序的,JPype是針對python程序員的。
第二,JPype安裝
1.先安裝Python2.7和JAVA1.6。
2.安裝JPYPE-0.5.4.2.win32-py2.7.exe(/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 ibmjava 50 jreinj 9 VM JVM . dll”。您可以通過調用jpype.getDefaultJVMPath()來獲得默認的JVM路徑。
參數2: args,可選參數,將由JPype直接傳遞給JVM,作為Java虛擬機的啟動參數。這適用於所有合法的JVM啟動參數,例如:
-agentlib:libname[=options]
-classpath類路徑
-冗長
-Xint 2。關閉JVM。
當您使用完JVM後,可以通過jpype.shutdownJVM()關閉JVM,它沒有輸入參數。當python程序退出時,JVM將自動關閉。
3.參考第三方Java擴展包
很多時候需要在python項目中調用第三方Java擴展包,這也是JPype的壹個重要用途。
通過在JVM啟動參數中添加:-DJ ava . class . path = ext _ class path,可以用python代碼調用現有的java擴展包。
4.訪問JAVA的系統屬性
有時,壹些Java應用程序需要在JVM中設置或獲取系統屬性。
JVM啟動時設置系統變量的示例:
將以下參數添加到JVM的啟動參數中:
-d property =值第四,例如
1.直接調用JAVA API
從jpype導入*
導入os.path
start JVM(" C:/Java/JDK 1 . 6 . 0 _ 10/JRE/bin/client/JVM . dll ","-ea ")
Java . lang . system . out . println(" hello World ")
關閉JVM()2。調用JAVA第三方擴展包。
1)JAVA自定義第三方jar包:將JpypeDemo類打包成jpypedemo.jar文件,存放在F:/sample_Py目錄下。
包jpype
公共類JpypeDemo {
公共字符串sayHello(字符串用戶){
返回“妳好”+用戶;
}
public int calc(int a,int b){
返回a+b;
}
} 2)Python調用第三方JAVA jar包程序。
從jpype導入*
導入os.path
jar path = OS . path . join(OS . path . abspath(' . ')),' F:/sample_Py/')
start JVM(" C:/Java/JDK 1 . 6 . 0 _ 10/JRE/bin/client/JVM . dll "、"-ea "、"-djava . class . path = % s " %(jar path+' jpypedemo . jar '))
#在#ubuntu中啟動JVM("/home/geek/Android/JDK 1 . 6 . 0 _ 43/JRE/lib/i386/server/lib JVM . so "、"-ea "、"-DJ ava . class . path = % s " %(jarpath+)
JDClass = JClass("jpype。JpypeDemo”)
jd = JDClass()
# jd = jpackage ("jpypepe ")。jpypedemo () #創建JD的兩種方法
jprint = Java . lang . system . out . println
jprint(jd.sayHello("waw "))
jprint(jd.calc(2,4))
關閉JVM()3。訪問JAVA的系統屬性。
假設您要設置的屬性名為yourProperty,屬性值為yourValue。
1)JVM啟動時設置系統變量示例
導入jpype
JVM path = jpype . getdefaultjvm path()
JVM arg = "-DyourProperty = your value "
如果不是jpype.isJVMStarted():
JYPE。startjvm (jvmpath,jvmArg)2)在程序中設置系統變量的示例。
導入jpype
prop = "您的財產"
value = "妳的價值"
system = jpype。JClass('java.lang.System ')
系統。setproperty (str (prop),str (value)) 3)獲取程序中系統變量的例子。
導入jpype
prop = "您的財產"
system = jpype。JClass('java.lang.System ')
value = system . getproperty(str(prop))