在Eclipse中运行TestNG文件时遭遇slf4j缺失类错误求助
问题详情
在Eclipse中运行TestNG测试类时触发错误,测试代码和错误信息如下:
测试代码
package java_package; import org.testng.annotations.Test; public class Testng1 { @Test public void log() { System.out.println("Hello"); } }
错误日志
[RemoteTestNG] detected TestNG version 7.8.0
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.testng.log4testng.Logger.lambda$getLogger$0(Logger.java:30)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
at org.testng.log4testng.Logger.getLogger(Logger.java:30)
at org.testng.TestNG.(TestNG.java:113)
at org.testng.remote.support.RemoteTestNGFactory7_8.createRemoteTestNG(RemoteTestNGFactory7_8.java:16)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:67)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 6 more
已尝试通过Eclipse Marketplace安装组件、更新Eclipse版本,问题仍未解决。
解决办法
这个错误是因为TestNG 7.x版本依赖**SLF4J(Simple Logging Facade for Java)**日志组件,项目中缺少对应依赖包导致的,以下是几种解决方式:
方法1:手动添加SLF4J jar包
- 下载SLF4J核心包
slf4j-api-x.x.x.jar和基础日志实现包slf4j-simple-x.x.x.jar(建议选2.0.x系列,和TestNG 7.8.0兼容) - 在Eclipse项目根目录新建
lib文件夹,将两个jar包复制进去 - 选中jar包右键 →
Build Path→Add to Build Path
方法2:Maven项目自动导入依赖
如果项目是Maven结构,在pom.xml中添加以下依赖:
<!-- SLF4J核心API --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.7</version> </dependency> <!-- 简易日志实现,适合测试场景 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.7</version> <scope>test</scope> </dependency> <!-- TestNG依赖,保持版本与当前使用的7.8.0一致 --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.8.0</version> <scope>test</scope> </dependency>
添加后右键项目 → Maven → Update Project,等待依赖自动下载导入
方法3:配置Eclipse TestNG运行时依赖
- 打开Eclipse → 顶部菜单
Window→Preferences - 左侧导航栏找到
TestNG并点击进入 - 切换到
TestNG Runtime标签,检查已加载的依赖列表 - 若没有SLF4J相关jar包,点击
Add External JARs,选择下载好的SLF4J jar包添加
内容的提问来源于stack exchange,提问作者Nikhil Panchal

