首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >springboot2.7.5启动错误: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

springboot2.7.5启动错误: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
EN

Stack Overflow用户
提问于 2022-11-14 15:58:55
回答 1查看 36关注 0票数 1

我介绍了spring web,使用了自己的spring-启动-启动-日志框架,在yaml中指定了配置文件,并报告了启动错误yaml:

代码语言:javascript
运行
复制
logging:
  level:
    root: info
    com.felix.flink.tutorial.api: debug
  config: classpath:logback-spring.xml

maven:

代码语言:javascript
运行
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.felix</groupId>
        <artifactId>flink-tutorial-component</artifactId>
        <version>${revision}</version>
    </dependency>
</dependencies>

例外情况:

代码语言:javascript
运行
复制
23:45:33.009 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@7abaedae
Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: 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:1540)
    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:299)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
    at com.felix.flink.tutorial.api.FlinkTutorialApiApplication.main(FlinkTutorialApiApplication.java:15)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 22 more

Process finished with exit code 0

我在pom中有导入slf4j 2.0.3derect,但它不起作用

EN

回答 1

Stack Overflow用户

发布于 2022-11-14 16:33:41

SLF4J彻底改变了它在1.x和2.x版本之间实现的方式。在1.x中,绑定类需要提供一个名为org.slf4j.impl.StaticLoggerBinder的类--缺少的类。在2.x中,它使用ServiceLoader机制。

Spring目前仍然使用SLF4J 1.7.36,通过spring-boot-starter-web -> spring-boot-starter -> spring-boot-starter-logging。后者依赖于一些SLF4J桥,以及logback-classic,后者又依赖于SLF4J 1.7.32。我认为1.7.36胜于1.7.32。

除非您的其他依赖项之一对SLF4J 2.x具有传递依赖关系,否则一切都应该正常工作。如果您这样做了,那么您就有了SLF4J 1.x和2.x的混合,这是完全行不通的。将2.x依赖项替换为1.x依赖项,您应该会很好(除非使用2.x中添加的fluent API )。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74434487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档