小编给大家分享一下python嵌入java的方法,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
<强> 1,JPype是什么? 强>
JPype是一个能够让python代码方便地调用java代码的工具,从而克服了python在某些领域(如服务器端编程)中的不足。
<强> 2,JPype与Jython (JPython后继者)的区别? 强>
(1)运行环境不同:Jython运行在jvm上,而JPype的实际运行环境仍然是python运行时,只是在运行期间启动了一个嵌入的jvm;
(2)使用者不同:Jython是给java程序玩的,JPype是给python程序员玩的。
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安装python-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:参数,为可选参数,会被JPype直接传递给JVM作为Java虚拟机的启动参数。此处适合所有合法的JVM启动参数,例如:
-agentlib:库名(=选项), -classpath classpath -verbose -Xint
<强> 2,关闭JVM 强>
当使用完JVM后,可以通过jpype.shutdownJVM()来关闭JVM,该函数没有输入参数。当python程序退出时,JVM会自动关闭。
<强> 3,引用第三方Java扩展包强>
很多时候,在python项目中需要调用第三方的Java扩展包,这也是JPype的一个重要用途。
通过在JVM启动参数增加:-Djava.class。路径=ext_classpath,实现在python代码中调用已有的Java扩展包。
<强> 4,访问Java的系统属性强>
有时,某些Java应用需要设置或者获取JVM中的系统属性。
在JVM启动时设置系统变量示例:
在JVM的启动参数中加入如下参数:
-Dproperty=价值
<强> 1,直接调用Java API 强>
得到jpype import *,, import os.path , startJVM (“C:/Java/jdk1.6.0_10/jre/bin/客户/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 用户){,, return “hello", +,用户,,, },, public int 钙(int ,, int b) {,, return a  +, b; } }
, (2) Python调用第三方JAVA jar包程序
得到jpype import *,, import os.path , 时间=jarpath os.path.join (os.path.abspath(& # 39; # 39;公司),,& # 39;F:/sample_Py & # 39;),, startJVM (“C:/Java/jdk1.6.0_10/jre/bin/客户/jvm.dll",“-ea",,“-Djava.class.path=% s", %,(时间+ jarpath & # 39; jpypedemo.jar& # 39;)),, # ubuntu 中startJVM (“/home/极客/Android/jdk1.6.0_43/jre/lib/i386/服务器/libjvm.so",“-ea",,“-Djava.class.path=% s", %, (时间+ jarpath & # 39; XXX.jar& # 39;)),, 时间=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(& # 39;有# 39;), ,,,system.setProperty (str(道具),str(值))python嵌入java的方法