Maven项目运行JSR223 Groovy编写的JMeter脚本报错
问题分析
错误日志显示运行时加载的是groovy-3.0.7.jar,而非你在依赖中声明的3.0.11版本。Groovy 3.0.7不支持JDK17对应的class文件主版本61,因此在语义分析阶段抛出错误。这是由于jmeter-maven-plugin默认依赖了旧版本Groovy,导致依赖冲突。
解决方案
1. 升级jmeter-maven-plugin版本
将插件版本从3.4.0升级到3.6.0及以上,该版本对JDK17的支持更完善。
2. 排除插件及JMeter核心自带的旧Groovy依赖
在依赖配置中排除ApacheJMeter_core自带的旧Groovy,同时在jmeter-maven-plugin中强制引入指定的Groovy 3.0.11版本,彻底解决依赖冲突。
3. 配置JMeter使用指定Groovy版本
在插件配置中添加属性,确保JMeter加载正确的Groovy类库。
修改后的完整pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <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>org.example</groupId> <artifactId>retry44</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jmeter.plugin.version>3.6.0</jmeter.plugin.version> <groovy.version>3.0.11</groovy.version> </properties> <dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>5.5</version> <exclusions> <exclusion> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>5.5</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>${groovy.version}</version> <type>pom</type> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-maven-plugin</artifactId> <version>${jmeter.plugin.version}</version> <executions> <execution> <id>configuration</id> <goals> <goal>configure</goal> </goals> </execution> <execution> <id>jmeter-tests</id> <goals> <goal>jmeter</goal> </goals> </execution> <execution> <id>jmeter-check-results</id> <goals> <goal>results</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>${groovy.version}</version> <type>pom</type> </dependency> </dependencies> <configuration> <jmeterProperties> <property> <name>jmeter.plugins.classpath</name> <value>${project.basedir}/target/dependency/groovy-all-${groovy.version}.jar</value> </property> </jmeterProperties> </configuration> </plugin> <!-- 提前下载依赖,确保JMeter能找到Groovy包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>copy-dependencies</id> <phase>pre-integration-test</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.basedir}/target/dependency</outputDirectory> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
验证步骤
- 执行
mvn clean dependency:tree,检查依赖树中是否仅存在Groovy 3.0.11版本,无3.0.7的依赖项。 - 执行
mvn verify运行JMeter测试,确认错误消失,脚本正常执行。
内容的提问来源于stack exchange,提问作者Kavi
相关产品推荐
相关产品推荐

