先看结果:

对于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调用第三方java包实例相关推荐

  1. python代码封装供第三方使用_python发博客

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python生成csdn博客分享图一.前言我们分享博客的方式有很多种,最常见的无 ...

  2. python能封装成exe文件_python文件封装成*.exe文件(单文件和多文件)

    环境:win10 64位  python3.7 单*.py文件打包 Python GUI:程序打包为exe 一.安装Pyinstaller,命令pip install Pyinstaller,(大写的 ...

  3. python中封装是什么意思_python封装是什么

    "封装"就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类):封装的目的是增强安全性和简化编程,使用者 不必了解具体的实现细节,而只是要通过外部接口,一特定的访问 ...

  4. python调用java方法_python调用java

    一.环境确认: 首先,要确认安装的jdk版本是1.8以上:其次,jdk安装位数与python安装的位数一致,及要么一起64位版本要么一起32版本. (以上2点不满足均会报错,比如:not found ...

  5. python调用java方法_python调用Java方法传入HashMap ArrayList

    1.Java代码: package com; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap ...

  6. python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  7. python连接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  8. python链接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  9. python操作js中的输入_Python调用JavaScript代码的方法

    准备阶段: 以一段简单的JS脚本为例,将代码写入到文件中,其中,定义了一个方法,计算两个数的和. //norm.js //计算两个数的和 function add(num1, num2) { retu ...

最新文章

  1. DICKSON隆重推荐的博客 --- SAP
  2. python queue模块安装_Python queue包_程序模块 - PyPI - Python中文网
  3. 【资源】学 AI 该学哪些斯坦福 CS 课程,这个清单安排得明明白白
  4. android listview的一些设置
  5. SSH putty Disconnected: Server protocol violation: unexpected SSH2_MSG_UNIMPLEMENTED packet
  6. c语言如何关闭线程,如何用C语言实现多线程
  7. 《编译原理》一道关于逆波兰式的作业题(学委推导出了逆波兰式的数学公式表示)
  8. 不用+、-、×、÷数字运算符做加法
  9. 明解c语言入门篇第三版第九章答案,明解C语言 入门篇 第一章答案
  10. PAT乙级练习题1028 人口普查
  11. Netbean UML自动生成类图
  12. 计算机win7开超级性能模式,笔记本win10系统开启超级性能模式(卓越性能模式)的方法...
  13. 如何通过链脉智能名片提高品牌知名度
  14. kettle spoon 连接mysql数据库
  15. AtCoder Beginner Contest 182----E. Akari
  16. jqGrid排序的两种实现方式
  17. matlab: 计算程序运行时间
  18. [摘]思科认证三步走及找工作的七大职业走向
  19. POJ3255 Roadblocks ——次短路
  20. 通过git上传个人项目代码到coding.net

热门文章

  1. RBAC 基于角色的访问控制
  2. jQuery 获取页面元素的属性值
  3. 设计模式——简单工厂
  4. linux 编译安装apache
  5. Android中常见的MVC/MVP/MVVM模式
  6. 什么是MCU里应尽量遵循的寄存器谨慎赋值法?
  7. 中ridge_10种线性代数在数据科学中的强大应用(内附多种资源)
  8. python多线程和异步性能对比_python对比线程,进程,携程,异步,哪个快
  9. JS高级——await-async
  10. 网际控制报文协议ICMP(Internet Control Message Protocol)(详解)