python调用第三方java包实例
先看结果:

对于python与java的互调,我一开始是用的py4j,但是后来发现在使用方法的时候,不知道如何在python中导入jar包,然后网上的资料也比较少。后来想不出来办法,又看到有Jpype这个东东。博友们说Jpype的安装比较不好安装,容易出错,建议用whl文件安装,我这里pip install jpype,倒是没出现问题,很快就下载好了。
先说一下Jpype,它是一个让python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足。
python端:
os.path.abspath这个函数用来获取当前 python 脚本(即py文件)所在的绝对路径, startJVM是用来开启JVM的,启动java虚拟机,所以在后续的任何 JAVA 代码被调用前,必须先调用此方法启动 Java虚拟机。其中,jvm,用于描述你系统中 jvm.dll 文件所在的路径,这个可以利用函数getDefaultJVMPath()获得。"-Djava.class.path=%s"% jarpath,此处非常关键,能实现在 python 代码中调用第三方Java 扩展包。(这里需要你把jar文件拷贝到python脚本文件的目录下。相应地,jpype.shutdownJVM() 用来关闭 JVM,该函数没有输入参数。当 python 程序退出时,JVM 会自动关闭。JDClass = JClass("basicTools.MathFuns") 是申请一个java类,用来调用方法。
代码:
'''
import jpype
from jpype import *
import os.path
jarpath=os.path.join(os.path.abspath('.'),"MathFuns.jar")#os.path.abspath这个函数用来获取当前 python 脚本所在的绝对路径
print(os.path.abspath('.'))
startJVM(getDefaultJVMPath(),"-ea","-Djava.class.path=%s"% jarpath)#"D:/jdk/jre/bin/server/jvm.dll"
JDClass = JClass("basicTools.MathFuns") #申请一个java类
jd = JDClass()#实例化
jprint = java.lang.System.out.println #申请 Java 输出类的输出函数
jprint("hello World")
jprint(jd.isEqual([1,2,3],[1,4,3]))#调用类的isEqual方法,判断两个数组是否相等
jpype.shutdownJVM()#关闭JVM
java端:
我下载了客户端eclipse,然后将MathFuns包导入在项目中,导入以后,就位于Referenced Libraries文件夹中了,如图所示:
。应该这样导入就好了,点开,可以看到有文件夹basicTools,MathFuns类。说到这里,我之前运行python端的时候出现了总是找不到MathFuns类的错误,找了很久都没有解决。最后竟然在类的前面加了basicTools,才解决了这个错误。所以,这里需注意,看看你是否有这样的一个文件夹。如果有,那就加上,如果没有,那就直接在申请java类的时候,直接写类名就好。
python调用第三方java包实例的更多相关文章
- python调用hanlp分词包手记
python调用hanlp分词包手记 Hanlp作为一款重要的分词工具,本月初的时候看到大快搜索发布了hanlp的1.7版本,新增了文本聚类.流水线分词等功能.关于hanlp1.7版本的新功能,后 ...
- C# 调用第三方DLL完整实例
C# 调用第三方DLL完整实例 分类: C/C++ 以下代码为本人在实际项目中编写的调用第三方DLL接口程序的完整代码. public class ExecuteDLL : Form { ...//忽 ...
- python安装第三方的包
转载自:http://blog.csdn.net/xyqzki/article/details/38414433 第一种基本安装方法 1 下载第三方包,解压 2 在命令提示符里输入cmd,然后用cd进 ...
- Matlab中调用第三方Java代码
搞了一天,才算搞定. 第一步:定位Matlab中Java环境的ext目录 新建一个M script文件,或者直接在Matlab的交互式命令行中输入: disp(java.lang.System.get ...
- python 调用第三方库压缩png或者转换成webp
因为工作需要去研究了下png的压缩,发现转换成webp可以小很多,但是webp在手机上的解码速度比png的解码速度慢很多.出于进几年手机设备的处理器的性能也不错了,所以准备两套方案. 在网上搜索了一些 ...
- 调用第三方jar包_md5加密
vars.put是转换成jmeter格式
- python 调用 java代码
一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...
- python调用java--JPype
JPype 是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足.JPype 的使用一个简单的 hello world 程序 ...
- Ant打包可运行的Jar包(加入第三方jar包)
本章介绍使用ant打包可运行的Jar包. 打包jar包最大的问题在于如何加入第三方jar包使得jar文件可以直接运行.以下用一个实例程序进行说明. 程序结构: 关键代码: package com.al ...
- Jmeter调用自定义jar包
一. 场景 在测试过程中, 可能需要调用第三方jar包来生成测试数据或者使用java工具类来实现业务场景, 普遍的做法是手动调用jar包, 再把这些值赋给jmeter中的某个参数, 以满足业务测试需求 ...
随机推荐
- discuz论坛个人空间自定义css样式
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` discuz论坛个人空间自定义css样式 日期:2020- ...
- 谁是Po主?
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 谁是Po主? 日期:2018-6-25 阿珏 教程 浏览: ...
- 前端使用 Konva 实现可视化设计器(16)- 旋转对齐、触摸板操作的优化
这一章解决两个缺陷,一是调整一些快捷键,使得 Mac 触摸板可以正常操作:二是修复一个 Issue,使得即使素材节点即使被旋转之后,也能正常触发磁贴对齐效果,有个小坑需要注意. 请大家动动小手,给我一 ...
- spark高级分析2的数据集地址
第二章 数据分析 wget https://archive.ics.uci.edu/ml/machine-learning-databases/00210/donation.zip 第三章 音乐推 ...
- 鸿蒙生态伙伴SDK市场正式发布,驱动千行百业鸿蒙原生应用开发
6月21-23日,华为开发者大会(HDC 2024)在东莞举办.在22日举办的[鸿蒙生态伙伴SDK]论坛中,正式发布了[鸿蒙生态伙伴SDK市场](以下简称:伙伴SDK市场),伙伴SDK市场是为开发者提 ...
- 【深度学习 有效炼丹】多GPU使用教程, DP与DDP对比, ray多线程并行处理等 [GPU利用率低的分析]
️ 前言 更新日志: 20220404:新增一个DDP 加载模型时显存分布不均问题,见目录遇到的问题及解决处 主要是上次server12 被自己一个train 直接线程全部拉满了(没错 ... ser ...
- ARM+DSP!全志T113-i+玄铁HiFi4开发板硬件说明书(1)
前 言 本文档主要介绍开发板硬件接口资源以及设计注意事项等内容,测试板卡为全志T113-i+玄铁HiFi4开发板.由于篇幅问题,本篇文章共分为上下两集,点击账户可查看更多内容详情,开发问题欢迎留言,感 ...
- InfluxDB 常用基本配置,启用账号密码登录,配置指定端口登录
打开安装目录下的 influxdb.conf 找到 http 节点 配置完成后再安装目录下使用命令启动 influxdb influxd --config influxdb.conf 启动完成后,基本 ...
- 一文了解Spring Boot启动类SpringApplication
本文分享自华为云社区<[Spring Boot 源码学习]初识 SpringApplication>,作者: Huazie. 引言 往期的博文,Huazie 围绕 Spring Boot ...
- .Net Core WebApi 使用 JWT 验证身份
.h2 { background-color: rgba(78, 110, 242, 1); color: rgba(255, 255, 255, 1); padding: 10px } 一.注册身份 ...