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中join和split用法实例
Apr 14 Python
Windows下PyMongo下载及安装教程
Apr 27 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
Python pass详细介绍及实例代码
Nov 24 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
Python3 关于pycharm自动导入包快捷设置的方法
Jan 16 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
Django 限制访问频率的思路详解
Dec 24 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
Python requests获取网页常用方法解析
Feb 20 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 Python
tensorflow中的数据类型dtype用法说明
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
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
关于 angularJS的一些用法
2017/11/29 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
如何在python中实现随机选择
2019/11/02 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Python多线程的退出控制实现
2020/08/10 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
机械电子工程专业求职信
2014/06/22 职场文书
手术室护士个人总结
2015/02/13 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers