Python程序中调用Java代码的实践
程序员文章站
2022-06-24 23:33:04
1.环境准备 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码依然运行在jvm中。 实验过程中使用的各个工具的具体版本如下: JDK(64位):1.8.0_102 ......
1.环境准备
windows 7(64位)+jdk(64位)+python(64位)+eclipse+pycharm
还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码依然运行在jvm中。
实验过程中使用的各个工具的具体版本如下:
jdk(64位):1.8.0_102
python(64位):3.7.2
jpype1(64位):0.7.2 直接pip install pype1来安装
eclipse+pycharm是两款开发工具,主要用来编写java和python代码
2.编码java代码,打jar包
工具安装完毕之后,接下来借助eclipse开发java代码,并打jar包。
1):开发java代码
2)打jar包
3)打jar包之后,获得了jar文件。
4)开发python脚本
# 引入jpype模块 import jpype import os """ 基本的开发流程如下: ①、使用jpype开启jvm ②、加载java类 ③、调用java方法 ④、关闭jvm(不是真正意义上的关闭,卸载之前加载的类) """ # ①、使用jpype开启虚拟机(在开启jvm之前要加载类路径) # 加载刚才打包的jar文件 jarpath = os.path.join(os.path.abspath("."), "d:\\hr.jar") # 获取jvm.dll 的文件路径 jvmpath = jpype.getdefaultjvmpath() # 开启jvm jpype.startjvm(jvmpath,"-ea", "-djava.class.path=%s" % (jarpath)) # ②、加载java类(参数是java的长类名) javaclass = jpype.jclass("com.java.python.javapython") # 实例化java对象 # javainstance = javaclass() # ③、调用java方法,由于我写的是静态方法,直接使用类名就可以调用方法 javaclass.main() # ④、关闭jvm jpype.shutdownjvm() pass
5)运行程序
6)如果是调用多个jar文件的话,要在jvm启动时指定jar文件路径,
jarpath,jarpath2,jarpath3,jarpath4是jar文件路径。
jpype.startjvm(jvmpath,"-ea", "-djava.class.path=%s;%s;%s;%s" % (jarpath,jarpath2,jarpath3,jarpath4))
作者:大龙
原文:https://www.cnblogs.com/dalongnotes/p/12454092.html
版权声明:本文为博主原创文章,转载请附上博文链接!