提问者:小点点

无法加载Spring Boot的类“org . slf4j . impl . staticloggerbinder”


我正在使用 Spring Boot 1.5.8。SLF4J似乎不适合我。这是我在项目运行开始时在控制台中得到的内容。出现以下错误:

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.

开始 : 编辑 1 :

我的控制台不记录以下内容:

LOGGER.error("ERROR");
LOGGER.error("WARN");
LOGGER.error("INFO");
LOGGER.error("DEBUG");
LOGGER.error("TRACE");

我得到的只是那三行错误(警告)作为控制台中的第一行。

结束:编辑1:

我查阅了互联网,发现了多个标题为“this”的问题,尝试了这些建议,但这并没有解决我的问题。我遇到了这个stackoverflow问题,康斯坦丁诺暗示了存在多个slf4j依赖关系的可能性。互联网上的其他解决方案也表明:;甚至官方网站也证实了这是导致这种错误的原因。

我还检查了我的有效pom,只是为了消除这种可能性,并发现我的有效pom确实包含他提到的所有4个依赖项。一般的建议是,pom应该只包含这四个依赖项中的一个。但是,由于这些都是由Spring boot处理的,我对如何解决这个问题有点困惑,因为我从未在我的pom中专门包含任何slf4j依赖项。所以我无法接受这个建议。

绒球.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.codingethics.flightreservation</groupId>
    <artifactId>flightreservation</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>flightreservation</name>
    <description>Flight Reservation Application</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/reservation
spring.datasource.username=root
spring.datasource.password=password

spring.jpa.show-sql=true

spring.mvc.view.prefix=/WEB-INF/jsps/
spring.mvc.view.suffix=.jsp

server.context-path=/flightreservation

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=<myusername>
spring.mail.password=<mypwd>
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

为什么这种依赖冲突(如果这里的情况如此)发生在 Spring 引导项目中。Spring的靴子不是要事先照顾这些吗?

非常感谢任何形式的帮助/指导。

开始 : 编辑@Antot

我得到NoClassDefFoundError。(遵循您建议的步骤):

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:179)
    at com.codingethics.flightreservation.FlightreservationApplication.main(FlightreservationApplication.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

END:为@Antot编辑


共1个答案

匿名用户

您可能首先要检查不受Spring Boot管理的东西是否正在引入额外的依赖项。您可以使用mvn依赖项:tree来执行此操作,以查看什么在吸引什么。

如果这没有给出正确方向的提示,那可能是您下载的依赖项之一被攻破了。您可能想要清除本地存储库。您可以使用mvn依赖项:清除-本地-存储库来从本地maven存储库中删除所有依赖项。

然后在执行mvn包(或其他将编译和构建jar的任务)时,将(重新)下载jar,希望以正确的方式没有损坏。