Maven集成JMeter脚本触发ConversionException异常求助
解决JMeter Maven集成中的XStream ConversionException问题
我来帮你搞定这个问题!从你提供的日志和POM配置来看,核心问题是缺少JSONPathExtractor对应的插件依赖,同时JMeter版本存在不一致的情况,导致类加载失败引发了ConversionException。
问题分析
- 缺失关键插件类:日志明确显示找不到
com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor,这个类属于JMeter的JSON扩展插件,但你的POM只引入了基础的jmeter-pluginspom,没有包含JSON相关的具体插件依赖。 - 版本冲突:你的POM手动依赖了
ApacheJMeter_java:3.1,但jmeter-maven-plugin:2.7.0默认使用的是JMeter 4.0(日志里能看到启动的是ApacheJMeter-4.0.jar),版本不一致会导致类加载混乱。 - POM语法错误:配置里有重复的编码属性,还有注释掉的依赖未正确闭合,可能影响依赖解析。
解决方案
1. 统一JMeter版本,移除冲突依赖
删掉POM中手动添加的ApacheJMeter_java依赖,因为jmeter-maven-plugin会自动管理JMeter核心依赖,避免版本冲突。
2. 添加JSON扩展插件依赖
在jmeterExtensions中加入JSONPathExtractor对应的插件artifact,针对JMeter 4.0,推荐使用匹配版本的插件:
<jmeterExtensions> <artifact>kg.apc:jmeter-plugins:pom:1.3.1</artifact> <artifact>kg.apc:jmeter-plugins-json:2.7</artifact> </jmeterExtensions>
3. 修复POM中的语法问题
- 移除重复的
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - 修正注释掉的
jmeter-plugins-manager依赖的闭合问题(原配置中注释未正确收尾)
修改后的完整POM示例
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>test_framework</groupId> <artifactId>api_test_plan</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>dkc_api_test_plan</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <ThreadCount.thread1>10</ThreadCount.thread1> </properties> <build> <plugins> <!-- jmeter plugin to run jmeter through maven build --> <plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-maven-plugin</artifactId> <version>2.7.0</version> <executions> <execution> <id>jmeter-tests</id> <phase>verify</phase> <goals> <goal>jmeter</goal> </goals> </execution> </executions> <configuration> <resultsFileFormat>xml</resultsFileFormat> <generateReports>false</generateReports> <testResultsTimestamp>false</testResultsTimestamp> <jmeterExtensions> <artifact>kg.apc:jmeter-plugins:pom:1.3.1</artifact> <artifact>kg.apc:jmeter-plugins-json:2.7</artifact> </jmeterExtensions> <!-- inputFile>${project.build.directory}/jmeter/results/CreateOrderLoadTest.jtl</inputFile --> </configuration> </plugin> <!--surefire plugin to generate html reports --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M3</version> <configuration> <outputFolder>${project.build.directory}/target/surefire-reports</outputFolder> <printReport>true</printReport> <exportAll>true</exportAll> </configuration> </plugin> <!-- <plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-analysis-maven-plugin</artifactId> <version>1.0.4</version> <configuration> <source>${project.build.directory}/jmeter/results/dkc_sales.jtl</source> </configuration> <executions> <execution> <id>create-html-report</id> <phase>verify</phase> <goals> <goal>analyze</goal> </goals> </execution> </executions> </plugin> --> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <!-- 移除了冲突的ApacheJMeter_java依赖 --> <!-- 如果需要插件管理器,可以添加下面的依赖(注意版本匹配) <dependency> <groupId>kg.apc</groupId> <artifactId>jmeter-plugins-manager</artifactId> <version>0.1</version> </dependency> --> </dependencies> </project>
额外建议
如果问题仍然存在,建议升级jmeter-maven-plugin到更高版本(比如3.5.0,对应JMeter 5.4.3),老版本的插件兼容性问题较多,升级后能更好地支持新插件和JMeter特性。
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

