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实现划词翻译
Apr 23 Python
使用python绘制人人网好友关系图示例
Apr 01 Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
python判断一个数是否能被另一个整数整除的实例
Dec 12 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
pycharm显示远程图片的实现
Nov 04 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
python中requests库+xpath+lxml简单使用
Apr 29 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
jquery中动态效果小结
2010/12/16 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
使用cx_freeze把python打包exe示例
2014/01/24 Python
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
python的dict判断key是否存在的方法
2020/12/09 Python
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
基层干部十八大感言
2014/01/19 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
小学信息技术教学反思
2014/02/10 职场文书
招股说明书范本
2014/05/06 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
承诺书格式
2014/06/03 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
2015年学校财务工作总结
2015/05/19 职场文书