当前位置: 首页 > news >正文

杂七杂八之基于ApiPost的Jar包调用

杂七杂八之基于ApiPost的Jar包调用

背景

ApiPost 是一款功能强大的 API 调试与测试工具,与 Postman 类似,但更加贴合国内开发者的使用习惯,并提供了丰富的本地化便捷功能。其中一项关键特性是支持直接调用 Jar 包中的方法,极大提升了开发与测试效率。本文将详细介绍如何通过 ApiPost 实现 Jar 包方法的调用,并结合实际操作过程中可能遇到的问题,提供实用的解决方案。

业务实现

  1. 我们在ApiPost的官方文档中有类似相关的业务描述,描述的内容如下
.jar程序:通过java命令运行如脚本 apt.execute('cn.example.Demo.jar', ['abc','bcd'])
实际执行命令为 java -jar cn.example.Demo.jar abc bcd  如需要调用jar中指定方法,执行:
apt.execute('cn.example.Demo.jar', ['abc','bcd'],  {className: 'com.example.Demo',method: "sayHi"}),实际执行了 cn.example.Demo.jar文件com.example.Demo类sayHi方法,参数是['abc','bcd']
  1. 坑一:但是在实际操作中,首先遇到了第一个坑,因为ApiPost安装的路径默认情况下是在某个盘的Program Files文件夹下,请特别注意:“Program Files”这两个单词中间是有空格的,然后导致了在ApiPost调用自己内部的工具jar包:jar-main-1.0-SNAPSHOT.jar时候,会报错,所以当我们要调用外部jar包时候,务必请关注安装路径的空格。
  2. 坑二:当我们实际在应用过程中发下另外一个问题,自己亲测以后发现,不是所有的jar中的方法都是可以调用的,目前测试来看,jar中一定要有一个主入口函数,即main函数,没有的话也会报错。
  3. 基于上述内容,我们避开坑,就可以编写我们自己的业务了,我们的业务是通过后去的rtsp流并且通过vlc工具进行打开。
  1. 编写依赖包,具体代码如下
package com.demo;public class vlc {public static void main(String[] args) {System.out.println("Hello World");}public void openWinExe(String appUrl, String videoUrl) {Runtime rn = Runtime.getRuntime();try {String command = String.valueOf(appUrl) + " " + videoUrl;rn.exec(command);} catch (Exception e) {System.out.println("Error win exec!");}}
}
  1. 使用idea打包成jar包,我这里直接通过“Build Artifact”进行打包。
  2. 打包好以后,我们在apipost的界面中,后执行操作中编写如下代码
let vlc = 'C:\\Program Files\\VideoLAN\\VLC\\vlc.exe';
// 这里有一个注意事项, url中可能存在转义字符, 所以需要增加双引号
const resource ='"' + pm.variables.get('resource') + '"';
const data = await apt.execute("D:\\1.JAVA\\openVLC\\out\\artifacts\\openVLC_jar\\openVLC.jar", [vlc,resource],  {//这里的类名为上述jar包的类名className: 'com.demo.vlc',//这里的方法名为上述jar包的方法名method: "openWinExe"});
  1. 我们可以看到执行效果如下
    在这里插入图片描述

到此,我们通过apipost工具调用jar包结束。

http://www.dtcms.com/a/389380.html

相关文章:

  • 华为HCCL集合通信库AllGather算子全流程解析
  • uv管理的python项目怎么打包成docker部署发布上线
  • unity之uv编辑
  • 华为电源研发的IPD实践:从概念到生命周期的结构化管控
  • MySQL中什么是回表查询,如何避免和优化?
  • MySql01
  • 2025版基于springboot的旅游门票预定系统
  • 3. Linux 计划任务管理
  • EasyCVR在智慧城市中场景中的核心应用与实践方案
  • LeetCode 刷题【84. 柱状图中最大的矩形】
  • CPP网络编程基础知识
  • 临床AI产品化全流程研究:环境聆听、在环校验与可追溯系统的多技术融合实践(上)
  • 【k8s】web服务优雅关闭用户连接
  • 设计模式的七大原则总述
  • C/C++柔性数组
  • 从 LiveData 到 Flow:Android 状态管理的现代化演进
  • 34、模型微调技术实战 - LoRA参数高效微调全流程
  • ASP.NET Core 中基于角色的授权
  • C++ 在 Windows 下实现最基础的 WebSocket 服务端与客户端
  • 并发、分布式和实时设计方法
  • C语言第15讲
  • windows 下使用 bat 批处理运行 Chrome 无头模式刷一波访问量
  • 项目名称:基于Qt框架的跨平台天气预报应用程序​​
  • 王自如重操旧业拆箱iPhone:苹果新机发售旧机发热是惯例……
  • 鸿蒙Next Core File Kit:文件管理的高效安全之道
  • Java-128 深入浅出 MySQL MyCat 分布式数据库中间件详解:架构、功能与应用场景
  • gozero使用gRPC-gateway生成http网关
  • Go语言100个实战案例-项目实战篇:股票行情数据爬虫
  • Python开发最新 PyCharm 2025使用(附详细教程)
  • 【session基础】