python调用jar 性能_Python -- jpype JVM的第三方库使用

Python -- jpype

安装 jpype

如图:直接执行 命令:pip install jpype 可见失败,提示没有版本信息

可以使用 pip  search jpype 查看相关版本信息

使用命令 pip install JPype1  进行安装、

安装失败,如下图

解决办法,

1、到指定的网址下载对应的软件安装即可

2、直接下载库文件安装, 推荐在:(python库下载地址(库很丰富,下载速度也很快):http://www.lfd.uci.edu/~gohlke/pythonlibs)

安装方式:cd 到文件所在路径,然后执行 命令 pip install 文件名 具体如下:

启动 Java 虚拟机

并执行简单java程序

如下代码:

#FileName : JpypeDemo.py#Author : Adil#DateTime : 2018/4/12 17:40#SoftWare : PyCharm

importjpypefrom time import *

#获取虚拟机路径

jvmPath =jpype.getDefaultJVMPath()#jpath = r'D:\SProgram\Java\Jdk8\jre\bin\server\jvm.dll'

#可见 获取jvmPath 与 jpath 一样。

print(jvmPath) #D:\SProgram\Java\Jdk8\jre\bin\server\jvm.dll

#启动虚拟机

jpype.startJVM(jvmPath)#判断虚拟机是否启动

print(jpype.isJVMStarted())#调用java程序,执行打印

jpype.java.lang.System.out.println("hello JPype !")#关闭虚拟机

jpype.shutdownJVM()

sleep(5)print(jpype.isJVMStarted())

使用java 中的对象

jpype还支持直接使用编译后的class文件,省去了编译这一环节。

以下是原来的JAVA测试代码

packagecom;public classJavaDemo

{

String value;publicJavaDemo(String value)

{this.value = value+" Java";

}publicString getValue()

{return this.value;

}public voidsay()

{

System.out.println("hello java");

}public static voidmain(String[] args) {

System.out.println("hello world");

}

}

使用 java 编译命令  在当前路径下进行编译,生成class 文件,执行 javac  ***.java

python 使用class 文件代码

#FileName : jpype.py#Author : Adil#DateTime : 2018/4/12 19:16#SoftWare : PyCharm

importjpype

jvmPath= jpype.getDefaultJVMPath() #获得系统的jvm路径#启动虚拟机

if notjpype.isJVMStarted():

jpype.startJVM(jvm=jvmPath)#使用JAVA字节码中定义的类,注意包名

javaClass = jpype.JClass('com.JavaDemo')#实例化对象

javaInstance = javaClass('test')#调用JAVA对象的方法

print(javaInstance.getValue())

javaInstance.say()#关闭jvm

jpype.shutdownJVM()

python 引入jar包,代码如下:

#FileName : GetMd5.py#Author : Adil#DateTime : 2018/4/12 20:28#SoftWare : PyCharm

importos.pathimportjpypeclassMd5(object):def __init__(self):

self.jvmPath=jpype.getDefaultJVMPath()

self.fileDir= os.path.realpath(__file__)#获取 jar包路径

self.jarPath = os.path.split(self.fileDir)[0] + r'\jmeter-md5.jar'

print(self.jarPath)#拼接 执行jar 包的路径

self.exejar = '-Djava.class.path=' +self.jarPathdefgetMd5(self,md):#启动 jvm 并执行jar 包

jpype.startJVM(self.jvmPath,self.exejar)#实例化 改jar包中的类

JDClass = jpype.JClass("com.jmeter.md5.GenerateMd5")#jprint = jpype.java.lang.System.out.println

#使用改类的方法

md5 =JDClass.createMD5(md)#jprint ('5555')

#关闭虚拟机

jpype.shutdownJVM()return md5

此例中,同时还使用了JAVA虚拟机启动时的命令行参数,可以订制启动方式

总之

jpype提供了强大而灵活的JAVA虚拟机接口,使得Python的扩展性进一步提升,Python的优雅语法,配上JAVA的工程化性能,可以使开发更加高效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值