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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
Python基础知识_浅谈用户交互
May 31 Python
python数字图像处理之高级形态学处理
Apr 27 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
python中时间模块的基本使用教程
May 14 Python
人工神经网络算法知识点总结
Jun 11 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
TensorFlow的自动求导原理分析
May 26 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的volist标签嵌套循环使用教程
2014/07/08 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
实例讲解PHP表单
2020/06/10 PHP
初学JavaScript第二章
2008/09/30 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Python模拟百度登录实例详解
2016/01/20 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
通过cmd进入python的实例操作
2019/06/26 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
酒店前台接待岗位职责
2013/12/03 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
初中生自我鉴定
2014/02/04 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
励志演讲稿200字
2014/08/21 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
秋冬农业生产标语
2014/10/09 职场文书
毕业证明模板
2015/06/19 职场文书
2016党员党课心得体会
2016/01/07 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
阿里云日志过滤器配置日志服务
2022/04/09 Servers