认识JPype

  • JPype是用于在python中调用java程序而诞生的,可以使得在python中使用java。它是一个python模块。
  • JPype是python和java之间的桥梁,理论上的目标是,使得python可以访问java程序中所有公开的特性。即在java中能访问的,python通过JPype桥梁也可以访问。
  • JPype通过控制JVM来控制java程序,值得关注的是JVM和python在同一个进程,可以理解为两个子线程共享相同的内存空间和线程。在python崩溃的时候JVM也会自动崩溃。
  • 对python用户来说,大多时候不用关心JVM,仅仅需要操作的是启动和关闭JVM。在python所在进程的生命周期内,不可以重启JVM。即关闭JVM后再启动JVM会遇到错误。

安装JPype

建议的方式:pip install JPype1

启动JVM

  • API: jpype.startJVM( *args , **kwargs )

第一种方式:

不指定任何参数启动。

if __name__ == "__main__":jpype.startJVM()java.lang.System.out.println("hello world!")
"D:\Program Files\Python39\python.exe" D:/myProjects/python/test_JPype/main.py
hello world!

如果没有指定参数,它将使用默认的类路径和 jvmpath 启动 JVM。
默认类路径为jpype.getClassPath().
默认 jvmpath为jpype.getDefaultJVMPath().

if __name__ == "__main__":print("默认类路径:"+jpype.getClassPath())print("默认JVM:"+jpype.getDefaultJVMPath())
默认类路径:.;D:\Program Files\Java\jdk-16.0.2\lib
默认JVM:  D:\Program Files\Java\jdk-16.0.2\bin\server\jvm.dll

默认路径与您的JDK安装路径有关。
默认类路径包含当前路径与JDK的lib目录。

第二种方式

指定参数启动。

1、如果你不想使用默认的jvm.dll

jpype.startJVM(jvmpath="You specify the jvm path")

2、 如果你想启动时加载一个jar包

jpype.startJVM("-Djava.class.path={}".format("your jar path")) # jpype.startJVM("-Djava.class.path={}".format(r"D:\myProjects\java\test1\out\artifacts\test1_jar\test1.jar"))
jpype.startJVM(classpath=r"D:\myProjects\java\test1\out\artifacts\test1_jar\test1.jar")

3、 如果你想启动时加载多个jar包

    jpype.startJVM(classpath=[r"D:\test_1\test1.jar",r"D:\test_2\test2.jar"])

4、 如果想启动时加载一个目录下所有jar包

jpype.startJVM(classpath=[r"D:\test_1\*"])

5、如果你想启动时加载多个目录下所有jar包

jpype.startJVM(classpath=[r"D:\test_1\*",r"D:\test_2\*"])

JVM启动后还需要加载jar包怎么办

在jvm启动后,如果还有jar包没有在类路径里包含,可以使用jpype.addClassPath这个api来完成增加jar包。

addClassPath(r"D:\test_1\test1.jar")
addClassPath(r"D:\test_1\*")

这个API会判断jvm是否启动:
如果jvm已经启动了,则将jar包路径增加到classLoader。
如果没有启动,则将jar包路径增加到_CLASSPATHS,然后启动jvm时加载这个jar包,这种方式与在启动时指定jar包类路径是相似的。

总结

这篇文章简单描述JPype的含义以及安装方式,然后介绍了JPype的启动,以及在启动时加载jar包和启动后加载jar包的方法。

python调用java之启动jpype相关推荐

  1. 绿化版Java11的环境配置与Python调用Java

    绿化Java环境的安装与配置 安装JDK 在Oracle的官网下载: 官方最新版本是16,个人选择下载11版本的zip压缩包:jdk-11.0.6_windows-x64_bin.zip 网盘下载地址 ...

  2. python调用java之Jpype实现java接口

    python实现java接口 概述 java程序 java接口 java测试函数 在python中实现java接口的两种方式 第一种:JImplements JImplements的使用示例 JImp ...

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

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

  4. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  5. python调用java的方法

    最近自己开发的一套测试平台,因为上游系统经常修改主数据,导致其中一个功能经常失败,要频繁找上游测试帮忙修改数据. 基于此种原因,对于这种过于依赖上游系统的接口,决定放弃直接调上游系统的http请求下发 ...

  6. python调用java代码方法

    前言: 公司要测试对外接口,接口中的数据又涉及到加密的问题,而python对加密数据进行位运算后,居然无法逆向位运算回来了(应该是个人能力不够吧),只好调用同事之前用的java代码中的函数去解码了,花 ...

  7. python调用java文件_Python程序中调用Java代码的实践

    1.环境准备 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码 ...

  8. Python 调用Java

    2019独角兽企业重金招聘Python工程师标准>>> 前提: Linux 环境 1 安装 jpype1 安装后测试代码: from jpype import * startJVM( ...

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

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

  10. python调用java的jar包_python调用java的jar包报错127

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近在弄python需要调用到Java的jar包,按照网上的教程走,最后总是报错No matching overloads found for [init ...

最新文章

  1. 激光雷达和V2X技术
  2. TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速
  3. bzoj 2563 贪心 思想
  4. oracle服务器和客户端字符集的查看和修改
  5. 张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)
  6. 汽车之家:基于 Flink + Iceberg 的湖仓一体架构实践
  7. 什么C++程序员,什么Java程序员
  8. 周六直播丨细致入微 – OceanBase云平台安装部署实战
  9. Windows下C++将各种资源文件引入exe文件(即无需携带很多res资源包)
  10. linux启动项目报连不上mysql_Linux运维常见故障及处理的 32 个妙计
  11. 【转】解决“你没有权限访问,请与网络管理员联系”
  12. 包与四种权限访问修饰符
  13. CAD控件Aspose.CAD V17.4发布 | 支持DWF和DWG格式
  14. python成语接龙代码_最全的成语接龙代码(附带有网页版)
  15. 采用16线激光雷达和轮式里程计调用cartographer室内融合定位
  16. CSS第7章上机练习1(制作QQ会员页面导航)
  17. 七牛云html文件夹,七牛命令行上传自动生成目录
  18. 关于pyecharts可视化进阶中国经济、人口等数据
  19. 四边形可以分为几类_四边形的分类
  20. HTPP常用请求头、HTTP响应头、HTTP content-type

热门文章

  1. zTree中设置idKey跟pId对象关联
  2. gmp计算机分类,GMP附录——计算机化系统汇总.pptx
  3. 离散元pfc 岩土工程
  4. w10系统怎样打开计算机策略,Win10系统组策略在哪里打开
  5. mysql 端口号_mysql的端口号(mysql常用端口号)
  6. F1C100S自制开发板调试过程
  7. 购物网站 前台后台 思维导图_「培哥学堂」60套思维导图PPT送给你,让你的工作事半功倍!(建议收藏)...
  8. 大学计算机课思维导图,快速记忆和理解大学计算机思维导图
  9. java导出地图矢量Shp文件
  10. 【技术分享】配置手工模式链路聚合(交换机之间直连)