如何在python中使用JPype实现调用java的实例共享
一、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))