JMeter 问题- java.io.InvalidClassException:kg.apc.jmeter.timers.VariableThroughputTimer;本地 class 不兼容:流 classdesc serialVersionUID

JMeter Issue- java.io.InvalidClassException: kg.apc.jmeter.timers.VariableThroughputTimer; local class incompatible: stream classdesc serialVersionUID

我正在尝试在 JMeter 分布式环境中使用 JMeter Throughput Shaping Timer。 JMeter master 配置了 JMeter Maven 插件。我已经在 pom.xml 和 JMeter 从节点上添加了所需的插件。我仔细检查了双方的插件版本,可以确认这些版本是相似的。

JMeter master 使用以下依赖项列表运行

                   <jmeterExtensions>
                        <artifact>kg.apc:jmeter-plugins-extras:1.4.0</artifact>
                        <artifact>kg.apc:jmeter-plugins-standard:1.4.0</artifact>
                        <artifact>kg.apc:jmeter-plugins-autostop:0.1</artifact>
                        <artifact>kg.apc:jmeter-plugins-casutg:2.9</artifact>
                        <artifact>kg.apc:jmeter-plugins-cmn-jmeter:0.6</artifact>
                        <artifact>kg.apc:jmeter-plugins-csvars:0.1</artifact>
                        <artifact>kg.apc:jmeter-plugins-functions:2.1</artifact>
                        <artifact>kg.apc:jmeter-plugins-manager:1.4</artifact>
                        <artifact>kg.apc:jmeter-plugins-perfmon:2.1</artifact>
                        <artifact>kg.apc:jmeter-plugins-prmctl:0.4</artifact>
                        <artifact>kg.apc:jmeter-plugins-tst:2.5</artifact>
                        <artifact>kg.apc:jmeter-plugins-webdriver:3.2</artifact>
                        <artifact>kg.apc:jmeter-plugins-dummy:0.4</artifact>
                        <artifact>kg.apc:jmeter-plugins-graphs-basic:2.0</artifact>
                        <artifact>com.blazemeter:jmeter-parallel:0.9</artifact>
                        <artifact>com.blazemeter:jmeter-plugins-random-csv-data-set:0.6</artifact> 
                    </jmeterExtensions>

但我在执行日志中观察到以下内容。感谢有人可以在这里提供一些指导。顺便说一句,我使用的是 JMeter 5.3 版本。

[INFO]  java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
[INFO]  java.io.InvalidClassException: kg.apc.jmeter.timers.VariableThroughputTimer; local class incompatible: stream classdesc serialVersionUID = 4905624732580509862, local class serialVersionUID = -8557540133988335686
[INFO] Error in rconfigure() method java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
[INFO]  java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
[INFO]  java.io.InvalidClassException: kg.apc.jmeter.timers.VariableThroughputTimer; local class incompatible: stream classdesc serialVersionUID = 4905624732580509862, local class serialVersionUID = -8557540133988335686
[INFO] [INFO ] 2021-08-04 10:51:49,112 DistributedRunner.println() - Remote engines have been started:[]

您患有 Jar Hell, the VariableThroughputTimer class 的一种形式存在于 2 个库中:

  1. kg.apc:jmeter-plugins-standard:1.4.0
  2. kg.apc:jmeter-plugins-tst:2.5

而且它们似乎有不同的 serialVersionUID 字段。

您只需选择一个库,然后从 JMeter Classpath 中删除多余的 .jars,问题应该得到解决。

在从属机器上,您可以 install/uninstall/upgrade 使用 JMeter Plugins Manager, it can also be used from the command line

的插件