1、python调用java的jar包

2023-11-10

在python中调用jar包

最近的项目功能需要调用客户的java接口,在调用接口的时候需要使用配套的jar包生成一些参数,但是公司的项目是用django搭建的,经过无数血与泪的尝试,最终终于找到了合适的方法去调用…

jpype包是一个Python的包,可以在python项目中调用java的jar包,并获取最终的返回值。使用方法很简单,但是安装的过程比较复杂。本文在ubuntu18.0.4系统,以python2以及jdk8为基础,讲解jpype包的使用。

1、安装java

首先去官网下载jdk1.8的tar包,放在/opt路径下,然后进行安装:

tar -zxvf jdk-8u261-linux-x64.tar.gz

安装完jdk之后,需要配置环境变量,在/etc/profile文件中添加以下内容:

set java environment
JAVA_HOME=/opt/java/jdk1.8.0_261        
JRE_HOME=/opt/java/jdk1.8.0_261/jre     
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

重启环境变量:source /etc/profile

2、安装python的jpype包

找到项目依赖的python环境:

sudo find / -name site-packages

将下载的jpype包放在site-packages路径下。

3、使用示例

jpype中主要包含以下方法:

jpype.getDefalutJVMPath()    # 获取jvm所在的路径
jpype.startJVM()             # 开启虚拟机
demo = jpype.JClass('hello.Demo')   # 加载jar包中的Demo文件
demo.sayHello()     # 调用 sayHello 方法
jpype.shutdownJVM()  # 关闭虚拟机

代码示例:

def run_jar():
    jvm_path = "/opt/java/jdk1.8.0_261/jre/lib/amd64/server/libjvm.so"
	jar_path = os.path.join(os.path.abspath("."), "/home/youzi/ssojar/Hello.jar")
    jpype.startJVM(jvm_path, "-Djava.class.path=%s" % jar_path) # 启动虚拟机
    demo = jpype.JClass('Demo')  # 加载Demo类
    demo.sayHello()				 # 调用sayHello方法
    jpype.shutdownJVM()  # 关闭虚拟机
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1、python调用java的jar包 的相关文章

随机推荐

  • 揭秘国产操作系统的黄金测试利器:探索开源测试工具的神秘世界

    揭秘国产操作系统的黄金测试利器 探索开源测试工具的神秘世界 文章目录 1 前言 2 国产操作系统现状的深度解析 3 国产操作系统的质量保障神器 开源测试工具 4 开源测试工具的重要性 5 国产操作系统如何利用开源测试工具进行黄金测试 6 国
  • 什么是子系统、模块、功能点,你清楚吗?

    1 子系统 对于所实现系统在功能上做的整体划分 可以是某个子系统 2 功能模块 子系统下的功能点的集合 3 功能点 通过用户交互触发 外部系统触发或后台程序触发来完成的一个完整的动作 搞清楚这些 有助于你书写建设方案 设计文档
  • Java--IDEA中Spring配置错误:class path resource [.xml] cannot be opened because it does not exist

    一 报错 运行 Spring 项目时报错如下 class path resource beans xml cannot be opened because it does not exist 没有找到 beans xml 配置文件 二 报错
  • 爬取旅游网站

    完整代码如下 可直接copy from bs4 import BeautifulSoup import urllib request import sqlite3 import os import time import threading
  • Maven项目里的pom解析和nexus私服

    一 什么是pom POM 即Project Object Model 通过pom xml文件配置Maven2 然后Maven2根据此配置执行 作用类似ant的build xml文件 功能更强大 该文件用于管理 源代码 配置文件 开发者的信息
  • 【C++】类与对象上

    文章目录 1 auto关键字 1 1auto介绍 1 2auto使用规则 1 3auto不能推导的情况 1 4范围for循环 2 指针空值nullptr 3 类与对象 3 1类 3 2类的定义 3 3类的访问限定符和封装 3 4封装 3 4
  • 「信号与系统」语音信号的语谱图、尺度变化、带限处理、基音提取

    信号与系统 语音信号的语谱图 尺度变化 带限处理 基音提取 本文将简单介绍几种语音信号的处理方法 1 语谱图 语谱图是一种描述语音信号频率特征的方法 横轴表示时间 纵轴表示频率 颜色深浅表示能量 基本原理是将语音信号分帧 每帧10 30ms
  • 实现isNum()函数,参数是一个字符串,如果字符串属于整数、浮点数或复数,则返回True否则返回False

    实现isNum 函数 参数是一个字符串 如果字符串属于整数 浮点数或复数 则返回True否则返回False def isNum str1 try a eval str1 if type a type 1 or type a type 1 0
  • MQTT协议-心跳请求和心跳响应

    MQTT协议 心跳请求和心跳响应 心跳请求是客户端发送给服务器的 心跳响应是服务器回应给客户端的 作用是保持客户端与服务器之间的连接 CONNECT报文的可变报头是由协议名 Procotol Name 协议级别 Procotol Level
  • 9月13号魔兽服务器维护,魔兽世界怀旧服9月13日7点再次开放免费转服 11个转服新服务器一览...

    魔兽世界怀旧服官方在9月12日的中午发布公告 表示将会在9月13日 也就是中秋节的上午7点到9月16日的早上7点再次开放免费转服 其中新开放了11组新服务器 具体的内容如下 我们预计于 9 月 13 日07 00 至 9 月 16 日07
  • Qt 5界面修改无效的问题解决QtDesigner修改之后无效的解决办法

    第一篇 关于Qt Ui修改不起作的结局办法 我在网上找到的解决办法 ui源文件到界面显示的原理可以网上搜索 这里不再描述 简单讲就是先要从 ui生成ui h然后再编译 所以界面未更新实际上是因为ui h这个文件没有更新导致的 根治的方法 项
  • Web Spider 常见混淆EVAL、AA、JJ、JSFUCK

    文章目录 一 资源推荐 二 EVAL constructor 三 AA混淆 四 JJ混淆 五 JSFUCK 六 针对混淆的方法 简单hook 总结 混淆的原理 就是把原本清晰的代码故意搞得花里胡哨 让局外人看不懂 混淆的目的 让逆向者很难理
  • Python中使用input()无输入

    Python中使用input 无输入 sublime Text编译器因页面美观 插件众多 功能强大深受编程爱好者的青睐 然而在编程中由于插件忘记安装导致程序运行失败 使人颇为烦恼 问题描述 在sublime Text编译器中使用input
  • Git 如何压缩 commit

    今天同事突然问我 由于在给老大的开源项目提 pr 的时候 自己比较长时间没有 rebase 的老大的项目 master 分支了 而自己提交的 commit 又很多 有些 commit 又是实验性质的 乱七八糟的 其实就是没有用熟 git 还
  • Java工作流框架:探索流程引擎的实现和应用

    目前 市面上有很多基于SpringBoot Vue前后端分离的Java快速开发框架和工作流开发框架可供选择 以下是一些比较流行的框架 1 Spring Cloud Spring Cloud是一套基于Spring Boot的开发工具 用于快速
  • sqli-labs Less18 原理到实现详解

    目录 前期知识储备 一 初始思路 1 思路 2 user agent后加入 发现出现sql错误日志 3 我尝试了之前用的各种闭合方法 都已失败告终 4 新的问题 5 现在想的是如何利用mysql插入语句insert实现注入 前期知识储备 从
  • 【Qt styleSheet样式表】

    一 Qt styleSheet样式表语法 1 属性列表 下表列出了 Qt 样式表支持的所有属性 可以为属性赋予哪些值取决于属性类型 除非另有说明 否则以下属性适用于所有小部件 标有星号 的属性为Qt特定的 在 CSS2 或 CSS3 中没有
  • Python+PySide2:使用多线程处理界面卡死的情况

    本篇主要是梳理一下 在使用 Pyside2 模块的时候 利用多线程处理页面假死 exe未响应 的问题 一 这边举个例子吧 如下图所示 测试代码如下 class Stats def init self 从文件中加载UI定义 super ini
  • 32位 与64位编译

    为了适应现在越来越流行的64位系统 经常需要将代码分别编译为32位版和64位版 其次 除了需要生成debug版用于开发测试外 还需要生成release版用于发布 本文介绍了如何利用makefile条件编译来生成这些版本 而且不仅兼容Linu
  • 1、python调用java的jar包

    在python中调用jar包 最近的项目功能需要调用客户的java接口 在调用接口的时候需要使用配套的jar包生成一些参数 但是公司的项目是用django搭建的 经过无数血与泪的尝试 最终终于找到了合适的方法去调用 jpype包是一个Pyt