我们在进行性能测试的过程中常常遇到一个奇怪的问题,比如在一台机器上调试好的脚本,但是在另一台压测机器上跑不通,报某些类找不到,可是查看两个脚本中测试计划中引用的包都一样,不知道如何定位。
下面我就分享一下我遇到这个问题是如何解决的。
一、首先我们分析测试计划下面导入的jar都一样,可能问题出现在jmeter压测工具中bin目录下的ext下面的jar包可能不一样,无问题的jmeter上某个jar包有这个报错的类,而那个报错的机器的jmeter下可能没有这个jar包。那么怎么定位呢
二、其次,在无报错的机器上jmeter的脚本中添加js232,把下面的代码粘贴上去,其他具体的类名,替换为你报错中找不到那个类名的全名称
groovy
// 替换成你要查询的完整类全限定名
def clazz = 具体的类名
def location = clazz.getProtectionDomain().getCodeSource().getLocation()
log.info("===== 类所在Jar信息 =====")
log.info("类全路径:" + clazz.getName())
log.info("所在Jar包路径:" + location.getPath())
log.info("Jar包文件名:" + location.getFile())
然后执行脚本,在打印的日志中查看是哪个具体jar包,然后把这个jar包也放在有问题的机器的jemter的ext的目录下就可以了,将有问题的jmeter重启后,再次执行脚本,问题解决!