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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
python函数的5种参数详解
Feb 24 Python
python遍历一个目录,输出所有的文件名的实例
Apr 23 Python
对python3中, print横向输出的方法详解
Jan 28 Python
对python 调用类属性的方法详解
Jul 02 Python
python小程序实现刷票功能详解
Jul 17 Python
Pytorch之parameters的使用
Dec 31 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
python类共享变量操作
Sep 03 Python
Python数据模型与Python对象模型的相关总结
Jan 26 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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 FileSystem 文件系统常用api整理总结
2019/07/12 PHP
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
Python安装第三方库的3种方法
2015/06/21 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
大客户销售经理职责
2013/12/04 职场文书
大学三年的自我评价
2013/12/25 职场文书
业务员简历自我评价
2014/03/06 职场文书
大家访活动实施方案
2014/03/10 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
公司总经理岗位职责
2015/04/01 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2015年质检工作总结
2015/05/04 职场文书
商业计划书格式、范文
2019/03/21 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python