最近有一个需求是需要用Python来调用Java的 Jar包。上网搜索了一下发现比较好用和出名的就是jpype了。 于是我也采用了这个开源的Python的项目来实现了我的诉求。jpype总体还是非常简单好用的。
JPype是一个用于在Python中调用Java代码的库。它提供了一种简单而高效的方法,让我们可以在Python程序中使用Java类和方法,以便利用Java丰富的生态系统和功能。
JPype允许我们创建Java虚拟机(Java Virtual Machine,JVM)的实例,并在Python中加载Java类。它提供了一个功能强大的接口,可以方便地传递参数、调用Java方法、访问Java类的属性,并在Python中处理返回的Java对象。
使用JPype,我们可以利用Java的各种功能,如调用Java库、使用Java框架、操作Java对象等。此外,JPype还支持在Python中实现与Java的双向通信,即可以从Python调用Java,也可以从Java调用Python。
JPype的安装非常简单,最简单的就是直接使用pip命令进行安装。一旦安装完,就可以在Python脚本中导入JPype模块,并开始使用它来调用Java代码。
jpype的github地址如下:https://github.com/jpype-project/jpype 官方的文档网站如下:http://www.jpype.org/ 如果有更高级的功能使用,可以来参考一下官方文档,接下来我来介绍一下jpype的基础使用,理论上能满足我们的绝大多数场景需求。
import jpype
# 启动Java虚拟机
jpype.startJVM(
jpype.getDefaultJVMPath(),
'-Djava.class.path=/hu/dddd/XXX-1.2.jar') #这里输入你要调用的JAVA JAR包的路径
# 加载Java类
YOURCLASS = jpype.JClass('com.XX.X.XX.YOURCLASS') #这里替换成你要调用的Java Jar包里的类的完整路径
#比如jpype.JClass('com.XX.X.XX.YOURCLASS')
# 创建Java对象
java_object =YOURCLASS ()
# 调用Java的类的方法
java_object.add('Hello')
java_object.add('World')
# 访问Java对象的属性
size = java_object.size()
# 打印结果
print('Size:', size)
# 在使用完成后要关闭Java虚拟机
jpype.shutdownJVM()
整体上使用就是这么简单,这里要注意的一点是,有的Jar包里的类,也许并不会给我们提供public的构造器,大多可能是通过单例模式来返回对象的。所以这种情况下在调用java_object =YOURCLASS ()的时候会报错,因为构造器是私有的无法直接new,那么这时候我们只需要换成java_object =YOURCLASS.getInstance()或者其他返回object的方法来获取java 实例就行,具体案例,具体分析。~
创作不易,如果您觉得这篇文章对你有帮助,不妨给我点个赞,这将是我继续分享优质内容的动力。
我准备了一个导航网站,上面记录了一些常用的网站集合,也包含一些羊毛,应该可以帮到你,感兴趣可以访问:https://u1s1.one/ ,欢迎收藏使用