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

Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提

之前写过一篇文章:https://qa-lsq.blog.csdn.net/article/details/119782694
只是简单尝试了一下生成一个随机手机号码。
但是如果在工作中一个实际场景要用的二次开发,可能会遇到一些问题。

比如这样一个场景:
Mobile或者前端调用部分接口,比如登录,验证码发送等等,要求手机号,密码,验证码等信息需要加密。
在调用接口时的值是经过加密的值,后端收到相应的信息后再解密。

这就使得在使用jmeter调用接口的时候,需要先把手机号,密码等值在其他地方加密一下,然后再填到jmeter里去,非常麻烦。
Jmeter二次开发就能完美的解决这个问题。

问题1

但在实际操作过程中遇到了一些问题。

首先讲一下环境,公司提供的电脑权限是限制的很死的,我没有权限修改环境变量。
同时java JDK的版本是17,IDEA只能下载社区版。

这就导致一个问题,使用社区版的IDEA创建Maven项目,然后打jar包,一切的做法都是对的,但偏偏打出来的jar包Jmeter无法读取。

原因是创建的maven项目中,pom.xml文件少了如下这段:
在这里插入图片描述

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>7</source><target>7</target></configuration></plugin></plugins></build>

如果少了这段,maven未必能正确支持j你的java版本,打出来的jar包jmeter识别不了。

这边还有一个问题,

<source>7</source>
<target>7</target>

这边我填的是7,不是17
因为经过确定的尝试,填17打出来的jar包jmeter也无法识别,需要填写低版本
我推测是因为我使用的jmeter版本较低的原因,与高版本的java JDK不兼容。

问题2

我之前尝试的是生成随机手机号码,这个函数非常简单,不需要特别的jar包支持。
仅需二次开发所必须的一些jar包,如下:
在这里插入图片描述

这些jar包在下载好的meter里都会自带的。

但如果我要实现其他的功能,需要另外的jar包支持呢。
我贴一下此次二开的加密代码,密钥用XXXXXXXXX替换:

package org.examples.functions;import cn.hutool.crypto.Mode;
import cn.hutool.crypto.symmetric.AES;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.Function;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.util.JMeterUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;import java.security.Security;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;public class EcbEncryFunctionsAA extends AbstractFunction {//密钥private static final String ACE_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX";private static final String key = "__ecbEncryptfunctions";private static final List<String> desc = new LinkedList<String>();private static String middleString = "";static{desc.add(JMeterUtils.getResString("Name of encrypt String using ECB"));}//    public static void main(String[] args) {
//        System.out.println(aesEncryptPKCS7Padding("13944566740"));
//    }@Overridepublic String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {Security.addProvider(new BouncyCastleProvider());
//        String ecb_key = ACE_KEY;String padding="PKCS7Padding";AES aes = new AES(Mode.ECB.name(),padding, ACE_KEY.getBytes());// 加密并进行Base转码String encrypt = aes.encryptBase64(middleString);return encrypt;}@Overridepublic void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {if (collection.size() != 1) {throw new InvalidVariableException("Expected 1 parameter, but got " + collection.size());}CompoundVariable parameter = collection.iterator().next();middleString = parameter.execute();}//    private static String aesEncryptPKCS7Padding(String text) {
//        Security.addProvider(new BouncyCastleProvider());
//        String ecb_key = ACE_KEY;
//        String padding="PKCS7Padding";
//        AES aes = new AES(Mode.ECB.name(),padding, ecb_key.getBytes());
 加密并进行Base转码
//        String encrypt = aes.encryptBase64(text);
//        return encrypt;
//    }@Overridepublic String getReferenceKey() {return key;}@Overridepublic List<String> getArgumentDesc() {return desc;}
}

这段加密需要两个jar包支持
在这里插入图片描述

经过测试,这段加密代码可用,而且打包之后可以在jmeter的函数助手里看见这个函数
但是在实际调用这个函数的时候jmeter会报错:
在这里插入图片描述

意思是没有相应的jar包支持

这边需要把所有依赖的jar包同样放到lib/ext/下
这边需要把所有依赖的jar包同样放到lib/ext/下
这边需要把所有依赖的jar包同样放到lib/ext/下

maven下载的jar包在.m2文件下,这边不多解释
在这里插入图片描述

解决这些问题之后,我的加密就可以在jmeter里使用了
在这里插入图片描述

相关文章:

Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提 之前写过一篇文章&#xff1a;https://qa-lsq.blog.csdn.net/article/details/119782694 只是简单尝试了一下生成一个随机手机号码。 但是如果在工作中一个实际场景要用的二次开发&#xff0c;可能会遇到一些问题。 比如这样一个场景&#xff1a; Mobile或者前端调用部分…...

网络安全B模块(笔记详解)- 数字取证

数据分析数字取证-attack 1.使用Wireshark查看并分析Windows 7桌面下的attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户的IP地址,并将恶意用户的IP地址作为Flag(形式:[IP地址])提交; 解析:http.request.method==POST ​ Flag:[172.16.1.102] 2.继续…...

阿里云服务器8080端口安全组开通图文教程

阿里云服务器8080端口开放在安全组中放行&#xff0c;Tomcat默认使用8080端口&#xff0c;8080端口也用于www代理服务&#xff0c;阿腾云atengyun.com以8080端口为例来详细说下阿里云服务器8080端口开启教程教程&#xff1a; 阿里云服务器8080端口开启教程 阿里云服务器8080端…...

vmlinux, vmlinux.bin, bzImage; cmake的find_package(Clang)新增了哪些变量( 比较两次记录的所有变量差异)

vmlinux, vmlinux.bin, bzImage cd /bal/linux-stable/ file vmlinux #vmlinux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, BuildID[sha1]=b99bbd9dda1ec2751da246d4a7ae4e6fcf7d789b, not stripped #文件大小 20MB, 19940148Bfile ar…...

webpack配置入门

webpack是需要一定配置才能使用的&#xff0c;否则无任何效果。在开始webpack学习之前必须理解以下5个核心概念。 5大核心配置 1.entry(入口) webpack从那个文件开始打包&#xff0c;支持单文件入口&#xff08;vue和react脚手架单入口&#xff09;和多文件入口 2.output(输…...

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图&#xff1f; "图搜图"指的是通过图像搜索的一种方法&#xff0c;用户可以通过上传一张图片&#xff0c;搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字&#xff0c;而是通过比较图片的视…...

LLM之RAG实战(十三)| 利用MongoDB矢量搜索实现RAG高级检索

想象一下&#xff0c;你是一名侦探&#xff0c;身处庞大的信息世界&#xff0c;试图在堆积如山的数据中找到隐藏的一条重要线索&#xff0c;这就是检索增强生成&#xff08;RAG&#xff09;发挥作用的地方&#xff0c;它就像你在人工智能和语言模型世界中的可靠助手。但即使是最…...

UI动效设计师通往高薪之路,AE设计从基础到进阶教学

一、教程描述 UI动效设计&#xff0c;顾名思义即动态效果的设计&#xff0c;用户界面上所有运动的效果&#xff0c;也可以视其为界面设计与动态设计的交集&#xff0c;或者可以简单理解为UI设计中的动画效果&#xff0c;是UI设计中不可或缺的组成部分。现在UI设计的要求越来越…...

APK多渠道加固打包笔记之360加固宝

知识储备 首先需要知道V1,V2,V3签名的区别&#xff0c;可以参考之前的文章&#xff1a;AndroidV1,V2,V3签名原理详解 前言&#xff1a;一般开发者会指定使用自己创建的证书&#xff0c;如果没有指定&#xff0c;则会默认使用系统的证书&#xff0c;该默认的证书存储在C:\Users…...

编程天赋和努力哪个更重要?

编程天赋和努力在编程中都非常重要&#xff0c;但它们的侧重点不同。 编程天赋通常指的是与生俱来的、在逻辑思维、抽象思维、创造力等方面的能力&#xff0c;这些能力可以帮助程序员更快地理解问题、更高效地设计和实现解决方案。天赋的确可以帮助程序员更容易地入门和更快地掌…...

SpringCloud Alibaba之Nacos配置中心配置详解

目录 Nacos配置中心数据模型Nacos配置文件加载Nacos配置 Nacos配置中心数据模型 Nacos 数据模型 Key 由三元组唯一确定&#xff0c;三元组分别是Namespace、Group、DataId&#xff0c;Namespace默认是公共命名空间&#xff08;public&#xff09;&#xff0c;分组默认是 DEFAUL…...

个人实际开发心得感悟及学习方法

前言 我的学习路线应该和大多数人的学习路线差不多,快速的学习完html和css,很多东西都没有记住的情况下就进入了js的学习,js学的懵懵懂懂就进入了node.js的基础学习和webpack的了解式学习,然后就跨度到了vue和react框架的学习。 节奏很快,学习的基础也极其不扎实。正如同那句…...

光速爱购--靠谱的SpringBoot项目

简介 这是一个靠谱的SpringBoot项目实战&#xff0c;名字叫光速爱购。从零开发项目&#xff0c;视频加文档&#xff0c;十天就能学会开发JavaWeb项目。 教程路线是&#xff1a;搭建环境> 安装软件> 创建项目> 添加依赖和配置> 通过表生成代码> 编写Java代码&g…...

P1019 [NOIP2000 提高组] 单词接龙

网址如下&#xff1a;P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 很怪&#xff0c;不知道该说什么 我试了题目给的第一个测试点的输入&#xff0c;发现输出和测试点的一样&#xff0c;但是还是WA 不是很懂为什么 有没有大佬帮我看一下…...

图解设计模式-中介者模式(Mediator)

中介者模式 定义 使用一个中介者对象&#xff08;mediator&#xff09;集中封装多个具有依赖/关联关系的对象&#xff08;colleague&#xff0c;同事对象&#xff09;之间的交互&#xff0c;使各对象之间不再互相引用&#xff0c;降低对象之间的强耦合程度&#xff0c;对象之…...

小程序面试问答(解决方案)

目录 问&#xff1a;uni-app 组件库的解决方案&#xff1f;&#xff08;xx 分钟&#xff09; 必答​ 加分​ 深入​ 再深入​ 参考链接​ 问&#xff1a;在 uni-app 中&#xff0c;如何进行全局状态管理&#xff1f;请介绍一下你对 Vuex 和 Pinia 的了解。​ 必答​ 加…...

qt第三天快速回顾

控件 listWidget 两种添加方式 1QListWidgetItem 2QStringList(链式编程) TreeWidget 核心代码 1设置头的标签 2.Item创建 添加顶层级别的Item 3.创建子Item 挂载到顶层的Item上 QLabelWidget 表格 增加了一个删除和添加 1.设…...

Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App

Android 编译过程介绍&#xff0c;Android.mk 和 Android.bp 分析&#xff0c; 在源码中编译 AndroidStudio 构建的 App_.mk编译目录所有.bp-CSDN博客...

【C++】几种常用的类型转换

类型转换 c语言中的类型转换C的类型转换static_castreinterpret_castconst_castdynamic_cast c语言中的类型转换 在C语言中我们经常会遇到类型转化的问题&#xff0c;主要分为两种&#xff1a;显式类型转换和隐式类型转换。 显式类型转换&#xff1a;就是程序员使用强制类型转…...

CCNP课程实验-07-OSPF-Trouble-Shooting

目录 实验条件网络拓朴 环境配置开始排错错点1&#xff1a;R1-R2之间认证不匹配错误2&#xff1a;hello包的时间配置不匹配错误3&#xff1a;R2的e0/1接口区域配置不正确错误4&#xff1a;R4的e0/1接口没有配置进OSPF错误5&#xff1a;R2的区域1没有配置成特殊区域错误6&#x…...

75.乐理基础-打拍子-八三、八六拍的三角形打法

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;八几拍的V字打法-CSDN博客 在八几拍中几乎只会遇到八三和八六拍&#xff0c;它的V字打法&#xff0c;每个一拍都是一个V字&#xff0c;但是它还有某种程度上更方便的方式去打&#xff0c;按图1 八六拍的三角形&…...

STLink下不了程序的解决办法

目录 1.检查物理接线是否正确 2.检查工程中用的引脚与这两个引脚是否有冲突 3.其次查看HAL_MspInit函数中是否使能SWJ 1.检查物理接线是否正确 2.检查工程中用的引脚与这两个引脚是否有冲突 stm32 swdio和swdclk引脚分别与stm32的PA13&#xff0c;PA14引脚相连 3.其次查看HA…...

操作系统---期末应用综合题

目录 操作系统---期末应用综合题 操作系统---期末应用综合题 1&#xff0e; 若在一分页存储管理系统中&#xff0c;某作业的页表如表1所示。已知页面大小为1024字节&#xff0c;试将逻辑地址1011&#xff0c;5012&#xff08;十进制数&#xff09;转化为相应的物理地址。 表1…...

56K star!一键拥有跨平台 ChatGPT 应用:ChatGPT-Next-Web

前言 现在围绕 openai 的客户端层出不穷&#xff0c;各路开发大神可以说是各出绝招&#xff0c;我也试用过几个国内外的不同客户端。 今天我们推荐的开源项目是目前我用过最好的ChatGPT应用&#xff0c;在GitHub超过56K Star的开源项目&#xff1a;ChatGPT-Next-Web。 ChatGP…...

springMvc向request作用域存储数据的4种方式

文章目录 目录1、springmvc使用ServletAPI向request作用域共享数据&#xff08;原生态&#xff09;2、springmvc使用ModelAndView向request作用域共享数据3、springmvc使用Model向request作用域共享数据4、springmvc使用map向request作用域共享数据5、springmvc使用ModelMap向r…...

SolidUI Gitee GVP

感谢Gitee&#xff0c;我是一个典型“吃软不吃硬”的人。奖励可以促使我进步&#xff0c;而批评往往不会得到我的重视。 我对开源有自己独特的视角&#xff0c;我只参与那些在我看来高于自身认知水平的项目。 这么多年来&#xff0c;我就像走台阶一样&#xff0c;一步一步参与…...

uthash -- basic

1. 了解什么是 hash 参考链接 2. 开源 uthash 如何使用 uthash源码链接 uthash使用参考链接 2. 开源 uthash 的实现详解 源码参考链接 源码注释版参考链接...

利用MATLAB绘制折线图

介绍 Matlab画图线型、符号及颜色汇总&#xff1a; https://blog.csdn.net/qq_40969467/article/details/90758281 实例&#xff1a; x20:20:140;%x轴上的数据&#xff0c;第一个值代表数据开始&#xff0c;第二个值代表间隔&#xff0c;第三个值代表终止a[0.85, 2.2, 3.45,…...

C# halcon 工业产品尺寸测量

产品检测 这段代码是一个基于HalconDotNet的Windows窗体应用程序&#xff0c;主要用于图像处理和测量。以下是对代码的一些总结&#xff1a; 1. **图像显示与加载&#xff1a;** - 使用HalconDotNet库进行图像处理。 - 通过OpenFileDialog实现图像文件的选择和加载。 …...

Vue中插槽的简单使用

插槽 分类&#xff1a;默认插槽、具名插槽、作用域插槽 默认插槽&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件通信的方式&#xff0c;适用于父组件&#xff08;App&#xff09;>子组件(MyFooter) 默认插槽的App组件 <template>&…...

购物网站怎么做代码/企业文化经典句子

2019独角兽企业重金招聘Python工程师标准>>> https://www.reddit.com/r/rust/comments/3x05j6/does_rust_work_on_arm/ https://github.com/warricksothr/RustBuild 转载于:https://my.oschina.net/innovation/blog/546933...

广西建设工程质量检测试验协会网站/湖南网站制作公司

<body> <div class"fd_0"> <div class"fd_1"> <table> <tr> <td> <p>博看文思是三星移动全球三大核心开发商之一&#xff08;亚洲唯一一家&#xff09;&#xff1b;也是法国电信&#xff08;Ora…...

宝应县天宇建设网站/百度网

failback / 故障回复 failback policy / 故障回复策略 failed / 失败 failover / 故障转移 failover policy / 故障转移策略 failover time / 故障转移时间 FAT, file allocation table / 文件分配表 FAT32 fault tolerance / 容错 Fax Service / 传真服务 FCB, file control …...

主机屋做淘宝客网站/广告主平台

有个DIY项目中用到一个音频ADC&DAC芯片WM8978&#xff0c;在第二次调板的时候发现和买回来的模块出来的结果差别很大&#xff0c;在输入5KHz信号时stm32单片机采集&#xff0c;然后通过自己写的python程序显示波形和功率谱&#xff0c;自己板子DOUT出来的数据波形杂乱无章&…...

五道口网站建设/郴州网站seo

转载http://www.cnblogs.com/bxm0927/p/7346270.html...

阅读网站建设/今天大事件新闻

『 风云说&#xff1a;能分享自己职位的知识的领导是个好领导。 』运行环境&#xff1a;JDK 7 或 8&#xff0c;Maven 3.0技术栈&#xff1a;SpringBoot 1.5&#xff0c; Spring Data Elasticsearch 1.5 &#xff0c;ElasticSearch 2.3.2本文提纲一、spring-data-elasticsearc…...