先看结果:

对于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包实例的更多相关文章

  1. python调用hanlp分词包手记

    python调用hanlp分词包手记   Hanlp作为一款重要的分词工具,本月初的时候看到大快搜索发布了hanlp的1.7版本,新增了文本聚类.流水线分词等功能.关于hanlp1.7版本的新功能,后 ...

  2. C# 调用第三方DLL完整实例

    C# 调用第三方DLL完整实例 分类: C/C++ 以下代码为本人在实际项目中编写的调用第三方DLL接口程序的完整代码. public class ExecuteDLL : Form { ...//忽 ...

  3. python安装第三方的包

    转载自:http://blog.csdn.net/xyqzki/article/details/38414433 第一种基本安装方法 1 下载第三方包,解压 2 在命令提示符里输入cmd,然后用cd进 ...

  4. Matlab中调用第三方Java代码

    搞了一天,才算搞定. 第一步:定位Matlab中Java环境的ext目录 新建一个M script文件,或者直接在Matlab的交互式命令行中输入: disp(java.lang.System.get ...

  5. python 调用第三方库压缩png或者转换成webp

    因为工作需要去研究了下png的压缩,发现转换成webp可以小很多,但是webp在手机上的解码速度比png的解码速度慢很多.出于进几年手机设备的处理器的性能也不错了,所以准备两套方案. 在网上搜索了一些 ...

  6. 调用第三方jar包_md5加密

    vars.put是转换成jmeter格式

  7. python 调用 java代码

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...

  8. python调用java--JPype

    JPype 是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足.JPype 的使用一个简单的 hello world 程序 ...

  9. Ant打包可运行的Jar包(加入第三方jar包)

    本章介绍使用ant打包可运行的Jar包. 打包jar包最大的问题在于如何加入第三方jar包使得jar文件可以直接运行.以下用一个实例程序进行说明. 程序结构: 关键代码: package com.al ...

  10. Jmeter调用自定义jar包

    一. 场景 在测试过程中, 可能需要调用第三方jar包来生成测试数据或者使用java工具类来实现业务场景, 普遍的做法是手动调用jar包, 再把这些值赋给jmeter中的某个参数, 以满足业务测试需求 ...

随机推荐

  1. mysql时间字段新增和修改默认时间,删除字段

    mysql时间字段新增和修改默认时间,删除字段##新增字段ALTER TABLE tbl_test ADD COLUMN `create_time` DATETIME NULL DEFAULT CUR ...

  2. 通俗理解GAN -- 基础认知

    Smiling & Weeping ---- 你已春风摇曳,我仍一身旧雪 1.GAN的基本思想 GAN全称对抗生成网络,顾名思义是生成模型的一种,而他的训练则是一种对抗博弈状态中的.下面我们举 ...

  3. 记一次 .NET某机械臂上位系统 卡死分析

    一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序会偶发性的卡死一段时间,然后又好了,让我帮忙看下怎么回事?窗体类的程序解决起来相对来说比较简单,让朋友用procdump自动抓一个卡死时的du ...

  4. Bind DNS服务——带KEY的区域传送与子域授权

    Linux基础服务--Bind DNS服务 Part3 带KEY的区域传送与子域授权 带KEY的区域传送 上文提到了区域传送,但实际上在区域传送的时,传送的区域文件并不会被加密.因此一般的区域传送并不 ...

  5. GIS数据获取:气象数据免费下载网站

      本文对目前主要的气象数据获取网站加以整理与介绍.   本文为"GIS数据获取整理"专栏中第二篇独立博客,因此本文全部标题均由"2"开头.本文对目前主要的气象 ...

  6. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest (Online Mirror, ICPC Rules, Teams Preferred) M. SmartGarden 题解

    cf1250 M. SmartGarden 完全不会做 orz,在 cf 上看到了有趣的做法. 通读题意后可以发现是对于每一次操作,要求选出的行集合 \(R\) 和列集合 \(C\) 要满足如下条件: ...

  7. ubuntu 18.0.4.6部署k8s 1.24

    一.系统安装 https://ubuntu.com/download/server 二.安装containerd sudo su - apt-get remove docker \ docker-cl ...

  8. paraview安装

    apt 安装 sudo apt install paraview 安装包安装 参考 https://blog.csdn.net/weixin_47492286/article/details/1272 ...

  9. MFC基于对话框工程笔记->新建MFC对话框

    一.前言 最近用MFC做了一个对话框小工具,学到了很多知识,现在做一下总结,以作备忘.(如有不足,后期添加修改) 二.MFC使用->新建MFC对话框 操作环境:VS2010 主要使用语言:C.C ...

  10. 做独立开发者,能在 AppStore 赚到多少钱?

    成为一名独立开发者,不用朝九晚五的上班,开发自己感兴趣的产品,在AppStore里赚美金,这可能是很多程序员的梦想,今天就来盘一盘,这个梦想实现的概率有多少. (Solo社区 投稿) 先来了解一些数据 ...