zihao-app

背景
    有一段解析序列化文件(该序列化文件由java生成)的java代码,要求修改为python代码解析,但是由于java序列化文件的不能跨平台的特性,所以退而求其次,找到了Python中的第三方库,jpype,手动加载jar包。

jpype安装

(venv) F:\ideaProjects\pythonProject\venv\Scripts>pip.exe install jpype1
Collecting jpype1
  Downloading JPype1-0.7.5-cp37-cp37m-win_amd64.whl (1.4 MB)
     |████████████████████████████████| 1.4 MB 1.6 MB/s
Installing collected packages: jpype1
Successfully installed jpype1-0.7.5

当看到Successfully installed jpype1-0.7.5时,表明已经安装成功,可以直接导入使用了。

jpype简单使用方法

import jpype
# 定义java虚拟机的路径,可调用jpype自带的默认方法,也可以自己找到自己环境中的jvm路径(一般是java路径下的jre\bin\server\jvm.dll)
jvm_path = jpype.getDefaultJVMPath()
# 定义jar包路径
jar_path = "xxx.jar"
# 判断JVM有没有启动
if not jpype.isJVMStarted():  # 这个判断非常重要,因为JVM在一个进程内就会自动关闭,后面在调用就会报错
    jpype.startJVM(jvm_path, "-ea", "-Djava.class.path=%s" % ext_classpath) # 将jar包加载到JVM中
# 获取jar包中类的实例对象
j_class = jpype.JClass(\'GetDBKey\')
# 调用类中方法
j_class.get_db_key()
if jpype.isJVMStarted():
    jpype.shutdownJVM()  # 关闭java虚拟机

附:

import os
jar_path = "xxx.jar"
# 可直接通过命令行的方式运行该jar包,运行时调用该jar包里主类的main方法
os.system(\'java -jar %s\' % jar_path)

总结
    JPype是一个能够让Python代码方便地调用Java代码的工具,适用于较为复杂的代码逻辑,有很强的灵活性;而附中所写方法是直接通过运行jar包的方式,只适用于处理简单的代码逻辑,缺少灵活性,各位看官可斟酌使用。

分类:

技术点:

相关文章:

  • 2021-12-17
  • 2021-04-28
  • 2021-12-15
  • 2021-12-02
  • 2021-09-11
  • 2021-06-23
  • 2021-12-05
猜你喜欢
  • 2021-11-19
  • 2021-11-09
  • 2022-01-10
  • 2021-08-12
  • 2021-04-09
  • 2021-12-15
相关资源
相似解决方案