python嵌入java的方法

  介绍

小编给大家分享一下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的方法