Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory Spring boot 1.5.2 maven_Spring_Maven_Spring Boot_Slf4j_Noclassdeffounderror - Fatal编程技术网

java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory Spring boot 1.5.2 maven

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.

我将按照本教程构建一个restful应用程序。当我从spring工具套件运行此应用程序(作为spring启动应用程序运行)时,出现以下错误:

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中找到

  • logback-core-1.0.13.jar
  • logback-classic-1.0.13.jar
  • 你可以用

    <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>