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显示生日是星期几的方法
May 27 Python
Python过滤列表用法实例分析
Apr 29 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
python ddt数据驱动最简实例代码
Feb 22 Python
python 消费 kafka 数据教程
Dec 21 Python
Python爬虫与反爬虫大战
Jul 30 Python
python属于哪种语言
Aug 16 Python
python raise的基本使用
Sep 10 Python
Django crontab定时任务模块操作方法解析
Sep 10 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
js计算页面刷新的次数
2009/07/20 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
深入浅析var,let,const的异同点
2018/08/07 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
What is view? why do we have view?
2012/06/22 面试题
Python中pass语句的作用是什么
2016/06/01 面试题
大学生评语大全
2014/04/18 职场文书
本科毕业生求职信
2014/06/15 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
小学主题班会教案
2015/08/17 职场文书
《小摄影师》教学反思
2016/02/18 职场文书