Spring Boot启动Logback报错:无法加载StaticLoggerBinder类求解
解决Spring Boot启动时Logback相关的StaticLoggerBinder缺失错误
问题现象
应用构建成功,但启动时抛出如下错误:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:293) at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:118) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:238) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:220) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:79) at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:56) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:56) at org.springframework.boot.SpringApplication.run(SpringApplication.java:298) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) at com.uks.sam.saveUserapi.saveUserapiApplication.main(saveUserapiApplication.java:19) Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 17 more
当前使用的依赖配置:
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.3.12</version> <!-- Use the latest version available --> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.3.12</version> </dependency> <!-- SLF4J API --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.0</version> </dependency>
问题原因
Logback 1.3.x版本依赖的SLF4J API版本是2.x,但你配置的SLF4J API是1.6.0版本,版本不兼容导致StaticLoggerBinder类无法被正确加载(SLF4J 2.x中该类的实现逻辑与1.x不同,且Logback 1.3.x基于SLF4J 2.x开发)。
解决方案
方案1:统一SLF4J API版本为2.x
将slf4j-api的版本升级到与Logback 1.3.12兼容的2.x版本(推荐使用SLF4J 2.0.9及以上,与Logback 1.3.12匹配):
<!-- SLF4J API --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.9</version> </dependency>
方案2:使用Spring Boot依赖管理(更推荐)
如果是Spring Boot项目,直接引入spring-boot-starter-logging依赖,它会自动管理Logback和SLF4J的版本兼容性,避免手动配置版本冲突:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>
若需要指定Logback版本为1.3.12,可在properties中配置:
<properties> <logback.version>1.3.12</logback.version> </properties>
验证步骤
- 执行
mvn clean install重新构建项目 - 启动Spring Boot应用,检查错误是否消失
内容的提问来源于stack exchange,提问作者Manu S Nair
相关产品推荐
相关产品推荐

