如何在python中使用JPype实现调用java的实例共享

本文主要介绍了JPype在python中调用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))