记一次jmeter启动报错问题及解决办法和解决思路

问题来源:

www.apache.org官网下载了最新jmeter5.3,在个人开发机上windows8.1下,启动bin/jmeter.bat报错

错误信息如下:

解决思路:

1、可能是自身环境问题

百度一下该错误(谷歌又被墙了,无奈啊),试了几个靠前一点的帖子, 没一个能解决我的问题

2、查看jmeter报错日志:

通过bin/jmeter.log我们可以看到错误日志信息如下:

2020-09-01 19:39:30,901 ERROR o.a.j.JMeter: An error occurred: 
java.lang.IllegalArgumentException: Unknown arg: –
	at org.apache.jmeter.JMeter.initializeProperties(JMeter.java:850) ~[ApacheJMeter_core.jar:5.3]
	at org.apache.jmeter.JMeter.start(JMeter.java:463) [ApacheJMeter_core.jar:5.3]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	at org.apache.jmeter.NewDriver.main(NewDriver.java:252) [ApacheJMeter.jar:5.3]

由此可知系统启动时初始化属性失败

3、从官网将jmeter5.3的源码包down下来并查看那个报错类的源码: JMeter.java

报错行数是850, 我们看看报错地方的代码是怎么写的

List<CLOption> clOptions = parser.getArguments();
        for (CLOption option : clOptions) {
            String name = option.getArgument(0);
            String value = option.getArgument(1);

            switch (option.getDescriptor().getId()) {

            // Should not have any text arguments
            case CLOption.TEXT_ARGUMENT:
                throw new IllegalArgumentException("Unknown arg: " + option.getArgument());

还没看代码,前面一行注释: Should not have any text arguments, 不应该有任何文本参数

嗷,好吧,咱们看看启动脚本加了哪些参数吧

4、打开bin/jmeter.bat我们找到启动的地方

找啊找,看到200行的时候发现这么一句

%JM_START% "%JM_LAUNCH%" %ARGS% %JVM_ARGS% -jar "%JMETER_BIN%ApacheJMeter.jar" %JMETER_CMD_LINE_ARGS%

​​​​​​嗯,应该就是你了,看看这条命令,启动参数后面就一个JMETER_CMD_LINE_ARGS,既然这个参数有问题,那我们就打印出来看下吧,在这行代码前面,我们输入:echo %JMETER_CMD_LINE_ARGS% ,然后保存重新点击bin/jmeter.bat执行一下

发现打印出来的这个参数内容就是报错时候的参数内容"-"

既然这样,那我们去掉该参数试试

 

5、修改启动脚本,去掉参数,修改后内容

%JM_START% "%JM_LAUNCH%" %ARGS% %JVM_ARGS% -jar "%JMETER_BIN%ApacheJMeter.jar"

​保存后再次启动bin/jmeter.bat

发现ok了

我又重新找到启动脚本定义该变量的地方:141行,发现如下说明:

:winNT1
rem On NT/2K grab all arguments at once
set JMETER_CMD_LINE_ARGS=%*

意思是NT/2K下,一次性获取所有参数,没看明白啥意思,但感觉我应该是不需要这个参数,百度也没找到合理的解释,暂时先这么地吧

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值