使用JMeter Maven插件2.7.0时遇Slf4jLogkitLogger覆盖final方法错误
解决JMeter Maven插件执行时Slf4jLogkitLogger覆盖final方法的错误
你在使用Ultimate Thread Group的JMeter测试计划中,通过jmeter-maven-plugin:2.7.0执行测试时遇到了日志组件冲突错误,导致Maven构建失败。具体错误信息如下:
[INFO] An error occurred: class org.apache.jorphan.logging.Slf4jLogkitLogger overrides final method log.(Lorg/apache/log/Priority;Ljava/lang/String;Ljava/lang/Throwable;)V [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6.556 s [INFO] Finished at: 2018-05-17T15:15:12-04:00 [INFO] Final Memory: 18M/437M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:2.7.0:jmeter (test) on project chilapis: Test failed with exit code:1 -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:2.7.0:jmeter (test) on project chilapis: Test failed with exit code:1 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.MojoExecutionException: Test failed with exit code:1 at com.lazerycode.jmeter.testrunner.TestManager.executeSingleTest(TestManager.java:179) at com.lazerycode.jmeter.testrunner.TestManager.executeTests(TestManager.java:115) at com.lazerycode.jmeter.mojo.RunJMeterMojo.doExecute(RunJMeterMojo.java:61) at com.lazerycode.jmeter.mojo.AbstractJMeterMojo.execute(AbstractJMeterMojo.java:233) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 20 more [ERROR] [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [INFO] Shutdown detected, destroying JMeter process...
你的POM文件片段如下(注意内容不完整,需确保XML标签闭合):
<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>com.honeywell.jmeter</groupId> <artifactId>chilapis</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <!-- Default Properties for Project --> <properties> <jmeter.analysis.maven.plugin.version>1.0.6</jmeter.analysis.maven.plugin.version> <jmeter-maven-plugin.version>2.7.0</jmeter-maven-plugin.version> </properties> <dependencies> <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.3</version> </dependency>
问题分析
这个错误的核心原因是日志组件依赖冲突:org.apache.jorphan.logging.Slf4jLogkitLogger试图覆盖父类的log final方法,通常是因为项目中引入了多个版本的Logkit/SLF4J相关依赖,或者JMeter插件与Maven插件的版本不兼容导致的。
解决方案
1. 升级JMeter Maven插件版本
jmeter-maven-plugin:2.7.0是2017年的旧版本,存在不少依赖兼容问题。建议升级到较新的稳定版本(比如3.5.0或更高),新版本已经修复了这类冲突问题。修改POM中的版本属性:
<properties> <jmeter-maven-plugin.version>3.5.0</jmeter-maven-plugin.version> </properties>
2. 排查并排除冲突依赖
如果升级插件后问题依旧,需要先查看项目的依赖树,定位冲突的日志组件:
mvn dependency:tree -Dincludes=org.apache.log,org.slf4j
然后在JMeter Maven插件的配置中排除冲突的依赖,示例如下:
<plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-maven-plugin</artifactId> <version>${jmeter-maven-plugin.version}</version> <dependencies> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>jmeter-core</artifactId> <version>5.5</version> <!-- 请匹配你实际使用的JMeter版本 --> <exclusions> <exclusion> <groupId>org.apache.log</groupId> <artifactId>log4j</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </plugin>
3. 确保Ultimate Thread Group与JMeter版本兼容
Ultimate Thread Group是第三方JMeter插件,需要确保它的版本和你使用的JMeter核心版本完全匹配。如果你的JMeter版本较旧,建议同步升级JMeter核心依赖和该插件的版本。
4. 修复POM文件语法问题
你提供的POM片段不完整,存在未闭合的标签,这也可能导致构建异常。请检查并补全所有未闭合的<dependency>和<dependencies>标签。
内容的提问来源于stack exchange,提问作者prasant sutaria
相关产品推荐
相关产品推荐

