IDEA源码编译Jmeter 5.1.1

1. 下载Jmeter源码

可以从Apache官网下载zip包后解压得到源码。源码的结构如图所示:
在这里插入图片描述

2.修改如下文件名称

打开命令行,切换到放置源码的地方,将下图中的两个文件名称修改一下,使其可以当做Eclipse工程导入IDEA。
在这里插入图片描述

3. 导入项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
导入之后,可以看到如下的目录结构:
在这里插入图片描述

4. 安装依赖

由于jmeter使用的是Ant来管理依赖的,我们需要安装Ant插件来安装依赖包。如下图所示:
在这里插入图片描述
在Ant Build中导入build.xml文件。
然后,执行Ant的download_jars命令下载jar包,时间可能较长,耐心等待一下:)
在这里插入图片描述

5. 执行install,并加入依赖

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 尝试运行

Jmeter的启动入口是\src\core\org\apache\jmeter\NewDriver.java文件:
在这里插入图片描述
运行时候有很大概率会遇到如下错误:

java.lang.Throwable: Could not access D:\Workspace\IdeaWorkspace\lib
	at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:106)
java.lang.Throwable: Could not access D:\Workspace\IdeaWorkspace\lib\ext
	at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:106)
java.lang.Throwable: Could not access D:\Workspace\IdeaWorkspace\lib\junit
	at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:106)

很显然是没有找到依赖包,点击跳转到106行去可以看到:

   File[] libDirs = new File[] { new File(JMETER_INSTALLATION_DIRECTORY + File.separator + "lib"),// $NON-NLS-1$ $NON-NLS-2$
                new File(JMETER_INSTALLATION_DIRECTORY + File.separator + "lib" + File.separator + "ext"),// $NON-NLS-1$ $NON-NLS-2$
                new File(JMETER_INSTALLATION_DIRECTORY + File.separator + "lib" + File.separator + "junit")};// $NON-NLS-1$ $NON-NLS-2$
        for (File libDir : libDirs) {
            File[] libJars = libDir.listFiles((dir, name) -> name.endsWith(".jar"));
            if (libJars == null) {
                new Throwable("Could not access " + libDir).printStackTrace(); // NOSONAR No logging here
                continue;
            }
     //......

可以看到是这里JMETER_INSTALLATION_DIRECTORY为空,再往上查找看到此变量的初始化位置,是从tmpDir变量获取而来:

     tmpDir = System.getProperty("jmeter.home","");// Allow override $NON-NLS-1$ $NON-NLS-2$
     if (tmpDir.length() == 0) {
            File userDir = new File(System.getProperty("user.dir"));// $NON-NLS-1$
            //可将此行代码改为 //tmpDir = userDir.getAbsoluteFile().getAbsolutePath();
            tmpDir = userDir.getAbsoluteFile().getParent();
       }

注意此处我使用的是Windows系统的电脑,不同系统会略有差异。

7. 界面语言设置

将jmeter.properties中的语言,设置为英文,改变下面这个位置的编码:
在这里插入图片描述
就可以看到熟悉的界面了:
在这里插入图片描述

8. 验证代码生效

这里找到Help-About Apache Jmeter菜单对应的方法,添加一行代码来验证一下。
在这里插入图片描述
在界面操作可以查看log,已经正常起作用了:

 ......
 INFO | keytool found at 'keytool'
 INFO | HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file D:\Workspace\IdeaWorkspace\apache-jmeter-5.1.1\bin\proxyserver.jks
 INFO | Default base='D:\Workspace\IdeaWorkspace\apache-jmeter-5.1.1'
 INFO | Note: Sample TimeStamps are START times
 INFO | sampleresult.default.encoding is set to ISO-8859-1
 INFO | sampleresult.useNanoTime=true
 INFO | sampleresult.nanoThreadSleep=5000
 你点击了帮助-关于。。。

到此,IDEA中编译和运行Jmeter源码到此为止,开始愉快地学习源码吧…

遗留问题:不管在jmeter.properties中改变字符编码为中文,还是在界面上设置成中文,总有一大部分乱码。然而下载已经打包好的则可以在界面上正常修改。猜测可能还有地方需要修改字符集,暂时还没有找到根源。:|

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值