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内建数据结构详解
Feb 03 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
numpy matrix和array的乘和加实例
Jun 28 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
python实现彩色图转换成灰度图
Jan 15 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
Python  Django 母版和继承解析
Aug 09 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
Python实现GIF动图以及视频卡通化详解
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查询快递信息的方法
2015/03/07 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
Python版微信红包分配算法
2015/05/04 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
python编写分类决策树的代码
2017/12/21 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python通过链接抓取网站详解
2019/11/20 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
微笑服务演讲稿
2014/05/13 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
劳资员岗位职责
2015/02/13 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL