Python使用jpype模块调用jar包过程解析


Posted in Python onJuly 29, 2020

一、jpype模块是什么?

能够让 python 代码方便地调用 Java 代码的工具

二、jpype模块安装

安装和其它模块没区别,但是注意模块名 是 jpype1 ,后面有个1

pip install jpype1

三、jpype模块应用(macOs下)

笔者在标题里面备注了所使用的操作系统,因为windows操作系统的一个配置有点区别,待会遇到再讲解吧。

3.1 jpype模块测试

import jpype

# getDefaultJVMPath 获取默认的 JVM 路径
jvm_path = jpype.getDefaultJVMPath()
# startJVM()启动 JAVA 虚拟机
jpype.startJVM(jvm_path,'-ea',convertStrings=False)
# 利用jpype调用输出语句
jpype.java.lang.System.out.println('Success')
# shutdownJVM()关闭JAVA虚拟机
jpype.shutdownJVM()

在上面代码中,如果你成功输出hello,说明环境安装配置成功了。

其中 jpype.startJVM() 的定义是

startJVM(jvm, *args)

参数 1: jvm, 描述的是系统中 jvm.dll 文件所在的路径,可以通过调用 jpype.getDefaultJVMPath() 得到默认的 JVM 路径。

参数 2: args, 为可选参数,会被 JPype 直接传递给 JVM 作为 Java 虚拟机的启动参数。此处适合所有合法的 JVM 启动参数,例

如:

常用为-ea启动断言机制、-Djava.class.path调用的jar包路径、-Djava.ext.dirs调用jar包的依赖包目录等

3.2 jpype模块调用jar包

第一步:编写java一个类,用eclipse等工具编写,代码如下:

package com.newdream;

//简单的一个java类
public class Calc {
	int num1;
	int num2;
	public Calc(int n1,int n2) {
		this.num1 = n1;
		this.num2 = n2;
	}
	
	public int add() {
		return this.num1 + this.num2;
	}
	
	public int sub() {
		return this.num1 - this.num2;
	}
	
}

第二步:通过在eclipse中右击该类,点击export导出为jar包格式

第三步:把jar包放到python项目下后,编写代码如下即可调用:

import jpype

jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path,
        '-ea',
        '-Djava.class.path=%s'%'./libs/Calc.jar',
        convertStrings=False)
jclass = jpype.JClass('com.newdream.Calc') #加载类
calc = jclass(10,20) #传入所需参数
value = calc.add() #调用类中的add方法
print(value)
jpype.shutdownJVM() #关闭JAVA虚拟机

以上即可完成调用jar包。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
python中引用与复制用法实例分析
Jun 04 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 Python
python实现层次聚类的方法
Nov 01 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 Python
Python 防止死锁的方法
Jul 29 #Python
Python定义一个Actor任务
Jul 29 #Python
Python如何重新加载模块
Jul 29 #Python
Python加速程序运行的方法
Jul 29 #Python
如何在python中判断变量的类型
Jul 29 #Python
Python中的With语句的使用及原理
Jul 29 #Python
解决c++调用python中文乱码问题
Jul 29 #Python
You might like
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
php模板原理讲解
2013/11/13 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python 从相对路径下import的方法
2018/12/04 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
python 读取串口数据的示例
2020/11/09 Python
酒店前厅员工辞职信
2014/01/08 职场文书
超越自我演讲稿
2014/05/21 职场文书
促销活动总结怎么写
2014/06/25 职场文书
争做文明公民倡议书
2014/08/29 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
银行自荐信范文
2015/03/25 职场文书
师范生见习总结范文
2015/06/23 职场文书
2016年寒假家长评语
2015/10/10 职场文书
如何使用PyCharm及常用配置详解
2021/06/03 Python
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
python字符串的一些常见实用操作
2022/04/06 Python