1.环境准备

 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm

 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码依然运行在jvm中。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 实验过程中使用的各个工具的具体版本如下:

 JDK(64位):1.8.0_102

Python程序中调用Java代码的实践 Python 第1张

 Python(64位):3.7.2

Python程序中调用Java代码的实践 Python 第2张

 jpype1(64位):0.7.2  直接pip install pype1来安装

Python程序中调用Java代码的实践 Python 第3张

   eclipse+pycharm是两款开发工具,主要用来编写java和python代码

2.编码java代码,打jar包

工具安装完毕之后,接下来借助eclipse开发java代码,并打jar包。

1):开发java代码

Python程序中调用Java代码的实践 Python 第4张

 

 2)打jar包

Python程序中调用Java代码的实践 Python 第5张

 

 Python程序中调用Java代码的实践 Python 第6张

 

 3)打jar包之后,获得了jar文件。

Python程序中调用Java代码的实践 Python 第7张

 

 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)运行程序

Python程序中调用Java代码的实践 Python 第8张

 

 

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
版权声明:本文为博主原创文章,转载请附上博文链接!

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄