21天学Python --- 打卡12:python执行jar包

news2024/11/24 4:34:16

在这里插入图片描述

21天学Python --- 打卡12:Python执行jar包

    • 1. Subprocess
      • 1.1 Method
      • 1.2 Execure Jar
    • 2. Jpype
      • 2.1 Install
      • 2.2 Execute Simple Jar
        • 2.2.1 Java Code
        • 2.2.2 Python Code
      • 2.3 Execute Maven Jar
    • 3. Awakening


在这里插入图片描述


1. Subprocess

subprocess 是 Python 2.4 中新增的一个模块

1.1 Method

subprocess.call()
父进程等待子进程完成

import subprocess
 
a = subprocess.call(['ipconfig','/all'])
print(a)
#执行命令,如果命令结果为0,就正常返回,否则抛异常

getstatusoutput()
接收字符串格式命令,返回元组形式,第1个元素是执行状态,第2个是命令结果

import subprocess
 
a = subprocess.getstatusoutput("whoami")
print(a)
#输出
(0, 'desktop-xxxx\\admin')

getoutput()
接收字符串格式命令,并返回结果

import subprocess
 
a = subprocess.getoutput("whoami")
print(a)
#输出
desktop-xxxx\admin

check_output()
执行命令,并返回结果,下例结果返回给a。

import subprocess
 
a = subprocess.check_output(['ipconfig','/all'])
print(a)

Popen()
在一个新的进程中执行一个子程序

import subprocess
 
a = subprocess.Popen(['ping','-c','1','www.baidu.com'],shell=True)
a.wait()

1.2 Execure Jar

import subprocess

def execute_java_jar( ):
    jar_path = "E:\\python_work\\airflow\\xxxxx.jar"
    param = ""
    execute = "java -jar {} '{}'".format(jar_path,param)
    print(execute)
    output = subprocess.Popen(execute, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    result = output.stdout.read()
    
    #打印控制台结果,按回车换行切割
    allSplit =result.decode().split("/r/n")
    for x in allSplit:
        print(x)

execute_java_jar()

2. Jpype

  • Jpype Introduction: https://github.com/jpype-project/jpype.
    在这里插入图片描述

2.1 Install

pip install jpype1

2.2 Execute Simple Jar

2.2.1 Java Code

  • 简单的java代码
    在这里插入图片描述
  • 打成Jar包,点击"Artifacts" -> 绿色的"+" -> “JAR” -> Empty
    输入一个名字
    Type选择JAR
    Available Elements里双击需要添加到jar包的文件,即可添加到左边的jar包目录下
    在这里插入图片描述
  • 运行程序入口main函数,点击OK。
    在这里插入图片描述
  • 点击菜单中“Build” -> “Build Artifacts”。
    在这里插入图片描述

2.2.2 Python Code

import jpype
import os

if __name__ == '__main__':

    path = 'E:\\python_work\\airflow\execute_jar\\hello.jar'
    jar_path = os.path.join(os.path.abspath("."),path)

    #  2.获取jvm.dll 的文件路径
    jvmPath = jpype.getDefaultJVMPath()
    print(jvmPath)

    # 启动jvm
    jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % path)

    # ②、加载java类(参数是java的长类名)
    HelloController = jpype.JClass('com.xxx.HelloController')

    hello = HelloController()
    hello.main(["abc"])
    hello.test()

    # ④、关闭jvm:jvm随着python程序的退出而结束
    jpype.shutdownJVM()

2.3 Execute Maven Jar

3. Awakening

         在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二证券|医药板块短期轮动加快 机构看好后市机会

作为现在商场行情继续性最强的职业板块,医药股昨日早盘呈现回调,午后继续反弹,体现出较强的承接动能。机构以为,本轮新冠医治概念主线行情或仍将延续,但个股或将继续分解。 在本轮反弹行情中,医药板块表现较…

postgres 源码解析 44 btree插入流程 btinsert

基于前两篇对btree的基础介绍,本文将从源码角度讲解btree的插入流程,相关至内容见: postgres源码解析41 btree索引文件的创建–1 postgres源码解析42 btree索引文件的创建–2 数据结构 /** BTStackData -- As we descend a tree, we push t…

干货 | 鸿翼&深信服之内容安全3大应用场景实践

随着企业数字化转型的推进,在企业内容管理层面,面临着数据爆发式增长,内容安全合规、海量非结构化数据分散存储,业务系统重建数据难以整合,无法统一管理等问题。 在数据安全层面,随着新威胁层出不穷&#…

Docker的CICD

🎏⭕引言 回顾使用docker进行项目部署的步骤: 将项目通过maven进行编译打包将文件上传到指定的服务器中将war包放到tomcat的目录中通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose的docker-compose.yml去运行容器 以上操作&#…

frp内网穿透详细安装步骤以及使用

frp是一款内网穿透工具,首先要一台服务器用作服务端(Linux),将自己的(WIN10)电脑用作客户端,我将通俗的讲解详细的安装以及使用过程,废话不多直接开始。 Linux要开放 7000 7500 9600端口,一…

Android入门第48天-静态BroadCast之接受开机广播

简介 我们在之前的BroadCast章节中写了动态BroadCast。但我们提过一笔BroadCast也有静态之分,而静态的BroadCast主要用于监听一些如:开机广播、SIM卡拨出插入等广播。这些广播都为静态注册广播事件。因此我们今天就以一个App监听Android开机广播为例子说…

[附源码]Node.js计算机毕业设计高校科研项目申报管理信息系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

三次握手四次挥手和SSL/TLS握手

http(TCP)三次握手四次挥手: 三次握手: SYN:同步位。SYN1 表示进行一个连接请求。 ACK:确认位。ACK1 表示确认有效,ACK0 表示确认无效。 ack:确认号。等于对方发送的序号1。 seq:序号。 握手…

高通Ride软件开发包使用指南(6)

高通Ride软件开发包使用指南(6)6.2使用SDK设置配置QDrive平台6.3生成SDK配置文件6.4 QDrive功能验证6.2使用SDK设置配置QDrive平台 配置平台 $ cd ~/qride/platform $ ./setup.sh [Platform SOC] 该脚本根据IP地址检测平台,然后推送摄像头Q…

【信息奥赛题解】位数问题(详细题解 C++ 代码)

📚 位数问题 🚀 题目浏览 【题目名称】位数问题 【题目描述】 在所有的 NNN 位数中,有多少个数中有偶数个数字 333 ? 由于结果可能很大,你只需要输出这个答案对 123451234512345 取余的值。 【输入】 读入一个数 N(N≤1000…

【Redis】数据类型操作一 (key/String/List)

文章目录0、Redis键(key)1、Redis字符串(String)2、Redis列表(List)实操0、Redis键(key)1、Redis字符串(String)2、Redis列表(List)0、Redis键(key) 切换数据库 select dbid select 8 清空数据库 flushdb (清空当前库) flushall (通杀全部库…

python机器学习与深度学习在气象中如何应用??如台风预报数据智能订正、预测风电场的风功率、预测浅水方程模式

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

年终洞察:日本正兴起一波“反向海淘”

这两天,正在日本备婚的李杨(化名)收到了“漂洋过海”从Starday跨境电商服务平台买来的喜庆装饰品,“这些烘托传统中国婚礼的独特装饰品在日本是很难买到的”从她打开Starday跨境电商服务平台,选择心仪的装饰品并并下单…

[附源码]Python计算机毕业设计高校线上教学系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

mysql查询基础

查询执行图 查询顺序 explain 参数说明 Id: MySQL QueryOptimizer 选定的执行计划中查询的序列号。表示查询中执行select 子句或操作表的顺序,id 值越大优先级越高,越先被执行。id 相同,执行顺序由上至下 Select_type: 一共有9中类型,只介绍常用的4种: SIMPLE: 简单的 select 查…

前端——给图形绘制阴影

给图形绘制阴影 在HTML5中,使用canvas元素可以给图形添加阴影效果。添加阴影效果时,只需利用图形上下文对象的几个关于阴影绘制的属性就可以了,这几个属性如下。 shadowOffsetX——阴影的横向位移量。 shadowOffsetY——阴影的纵向位移量。…

提面优秀资格上岸浙大MBA经验分享

三百多天的备考,终于等来了一个好的结果。曾经的我也一直在犹豫到底要不要放弃对于浙大的执念,虽然说我的工作是还行,但是我的第一学历只是一个不入流的二本院校,当时咨询的老师说是对于浙大提面来说,我肯定是要吃学历…

MobSDK引进相关问题

1、进入全球领先的数据智能科技平台-MobTech袤博mob官网 首先注册帐号、核验身份、选择开发者平台 2、创建项目的appkey和对应的appSecret 进入开发者模式后,对应以下几个选项模块(以短信验证模块为例),点击开始使用 跳转到个人…

[附源码]Nodejs计算机毕业设计基于的宠物领养管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

怎么将语音转为文字?不如试试这几个语音转文字软件app

随着时代的发展,现在许多小伙伴会将重要却来不及整理的内容,用录音或是语音的方式记录下来,之后再进行整理。但是在整理的时候,有些人可能会因为需要多听几遍音频才能完成工作而感到痛苦,毕竟这样做,花费的…