java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory Spring boot 1.5.2 maven
我将按照本教程构建一个restful应用程序。当我从spring工具套件运行此应用程序(作为spring启动应用程序运行)时,出现以下错误:java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory Spring boot 1.5.2 maven,spring,maven,spring-boot,slf4j,noclassdeffounderror,Spring,Maven,Spring Boot,Slf4j,Noclassdeffounderror,我将按照本教程构建一个restful应用程序。当我从spring工具套件运行此应用程序(作为spring启动应用程序运行)时,出现以下错误: Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.
Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:190)
at webapp.Application.main(Application.java:9)
... 6 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
已尝试使用此解决方案将最新的jar添加到类路径,但出现另一个错误:
SLF4J: Class path contains multiple SLF4J bindings.
请给我一些启示,我为这个问题奋斗了三天 您的依赖项中有多个记录器,而slf4j不知道使用哪个记录器。您应该检查Maven的依赖关系树来修复它
logback-classic <-> log4j-over-slf4j <-> jboss-logging (?)
logback经典log4j-over-slf4j jboss日志(?)
您可以排除Spring引导日志记录(默认情况下为Logback)并手动声明Log4j2:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
org.springframework.boot
弹簧靴起动器
org.springframework.boot
spring启动程序日志记录
org.springframework.boot
spring-boot-starter-log4j2
经过几次尝试和错误,我发现我的slf4j jar已损坏。当我运行mvnpackage命令时,我可以看到它,并且有警告。
我重命名了jar,然后它将重新下载jar。一旦jar没有损坏,应用程序就会面临另一个错误。我只是跟踪了这个消息来源
在排除中添加hibernate验证程序。之后,我可以正常运行我的应用程序。谢谢大家。这也发生在我身上,我将spring boot版本更改为以前的版本,并且它可以正常工作。
我将1.5.6-RELEASE更改为1.3.5-RELEASE,将缺少的Logback jar添加到类路径中。jar可以在Maven Central中找到
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
org.springframework.boot
弹簧靴起动器
org.springframework.boot
spring启动程序日志记录
org.springframework.boot
spring-boot-starter-log4j2
log4j
log4j
1.2.17
org.slf4j
slf4j api
1.7.12
我添加了您建议的排除项,但仍然抛出相同的错误。我应该添加外部jar(slf4j)还是仅仅从maven依赖项中使用?不,永远不应该添加外部jar文件。始终依靠Maven来管理依赖关系。你们有外置罐子吗?如果是这样,这当然是你的问题。因为我上面的建议应该可以解决您的问题,除非您的代码中有另一个隐藏在问题中不可见的地方。我已经尝试了两种方法。有或没有外部罐子。是的,据我所知,这个Maven应该管理我们的依赖关系,我也不能删除Maven依赖关系中的jar,除非我添加排除或更改pom.xml。我可以知道你是否和我有同样的问题,或者你可以正常运行应用程序,如果你只是使用了初始化器中的spring boot项目启动程序?thanksI有相当大的项目,具有类似的POM,并且没有冲突。当你说你不能移除罐子时,你总是可以;将其推送到Maven存储库中,并将其作为普通依赖项使用。您应该检查罐子的内部,如果它包含其他记录器。
logback-classic <-> log4j-over-slf4j <-> jboss-logging (?)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>