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获取央视节目单的实现代码
Jul 25 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
python 实现数字字符串左侧补零的方法
Dec 04 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
python时间日期操作方法实例小结
Feb 06 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
pandas中DataFrame重置索引的几种方法
May 24 Python
如何Python使用re模块实现okenizer
Apr 30 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
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
js日期联动示例
2014/05/02 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
Python运算符重载详解及实例代码
2017/03/07 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
详解python中index()、find()方法
2019/08/29 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
计算机求职信
2013/12/01 职场文书
信息管理员岗位职责
2013/12/01 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
兵马俑的导游词
2015/02/02 职场文书
实名检举信范文
2015/03/02 职场文书
雷锋的观后感
2015/06/10 职场文书
教师师德承诺书2016
2016/03/25 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书