jmeter如何引用自己编写的java文件编译的jar包

需求说明:

现有三个变量:appId、appSecret、timestamp(当前时间时间戳),根据这三个变量生成signature,加密程序如下:

 1 package cn.yxh.util;
 2 
 3 import org.apache.commons.codec.binary.Base64;
 4 
 5 import javax.crypto.Mac;
 6 import javax.crypto.spec.SecretKeySpec;
 7 import java.net.URLEncoder;
 8 import java.nio.charset.StandardCharsets;
 9 import java.util.HashMap;
10 import java.util.Map;
11 import java.util.stream.Collectors;
12 
13 public class SignatureUtil {
14     public static String getSignature(long timestamp, String appId, String appSecret) throws Exception {
15         Map<String,String> requestParams = new HashMap<>();
16         requestParams.put("appId", appId);
17         requestParams.put("timestamp", String.valueOf(timestamp));
18         requestParams.put("nonce", "nonce");
19         requestParams.put("appSecret", appSecret);
20         String stringToSign = requestParams.values().stream()
21                 .sorted(String::compareTo)
22                 .collect(Collectors.joining("
"));
23         Mac mac = Mac.getInstance("HmacSHA256");
24         mac.init(new SecretKeySpec(appSecret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
25         byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
26         String base64Sign =  new String(Base64.encodeBase64(signData),StandardCharsets.UTF_8);
27         String sign = URLEncoder.encode(base64Sign, StandardCharsets.UTF_8.name());
28         return sign;
29     }
30 
31     public static long getTimeStamp(){
32         return System.currentTimeMillis();
33     }
34 
35     public static void main(String[] args) throws Exception {
36         String appId = "12526080-1245184";
37         String appSecret = "9A6E5171C9A034863622";
38         System.out.println(getSignature(getTimeStamp(), appId, appSecret));
39     }
40 }
SignatureUtil

由于使用到了commons-codec-1.14.jar,需要使用jmeter引用外部jar包,但是在使用过程中发现老是报错,且jmeter无法直接使用Map<String,String> requestParams = new HashMap<>();需要转换成Map requestParams = new HashMap;等各种错误,故想自己将java文件打包成jar调用。

1.编写自己的java文件并利用idea打包成jar文件

  • 新建一个java工程,编写java文件并引入commons-codec-1.14.jar包
  • 按组合键ctrl+shift+alt+s进入项目结构界面,点击第二张图片上的『+』按钮,选择第二个选项
  • 为jar包添加一个主函数,点击OK继续
  • 如果主函数有依赖包,点击『+』按钮添加依赖jar包(如已添加则不需操作),点击OK后可以看到工程中多出了META-INFO文件,里面包含了Jar的入口函数信息

  • 执行组建jar操作:按照下图操作后可以看到最终生成的jar文件

  • 打开命令行cmd,将目录切换到生成jar包的文件位置,执行如下命令:

    java -jar SignatureUtil.jar

    输出:z9kUv8RsE0OPgHmHh8VJqpgGxhn9eVRJkEu7IsP%2Bhag%3D,可见jar文件正常运行了

 

2.jmeter引用自己编写的jar包

 将SignatureUtil.jar包放到jmeter安装目录下的lib下的ext文件下(例如:D:apache-jmeter-5.1.1libextSignatureUtil.jar)

jmeter添加jar包

 beanshell脚本调用jar包中的方法

原文地址:https://www.cnblogs.com/smartsmile-yxh/p/13671917.html