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 03 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
python 获取当天每个准点时间戳的实例
May 22 Python
python正则表达式之对号入座篇
Jul 24 Python
python感知机实现代码
Jan 18 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
python实现简单贪吃蛇游戏
Sep 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
一贴学会PHP 新手入门教程
2009/08/03 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
详解Python3注释知识点
2019/02/19 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
python两种注释用法的示例
2020/10/09 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
python实现xml转json文件的示例代码
2020/12/30 Python
大学校庆策划书
2014/01/31 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
创建文明城市倡议书
2015/04/28 职场文书
百家讲坛观后感
2015/06/12 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书
OpenCV实现反阈值二值化
2021/11/17 Java/Android