我将如何解决 Java 和 Spring 引导中的 slf4j logback 类路径错误?

How would I resolve an slf4j logback classpath error in Java and Spring Boot?

所以我目前正在使用 Twilio 发送和接收短信。我使用 Spring Boot 作为应用程序框架,Gradle 作为构建工具,VSCode 作为 IDE.

它在执行 bootRun 时构建成功,但是我的本地主机服务器没有启动并在 DEBUG CONSOLE.

中导致以下异常

Below, I've put some parts of the Debug Console.

多重绑定

> Task :bootRun
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/james/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.21/be4b3c560a37e69b6c58278116740db28832232c/slf4j-simple-1.7.21.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/james/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]

Java IllegialArgumentException

Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.SimpleLoggerFactory loaded from file:/C:/Users/james/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.21/be4b3c560a37e69b6c58278116740db28832232c/slf4j-simple-1.7.21.jar).

Here are the implementation statements in my build.gradle file that are relevant to what I'm doing

implementation 'org.slf4j:slf4j-simple:1.7.21'
implementation 'com.sparkjava:spark-core:2.7.1'
implementation 'com.twilio.sdk:twilio:7.17.+'

Here are a few things that I have tried to solve the problem:

我已经尝试将来自另一个 Whosebug 问题的以下内容放入我的 gradle 文件中

configurations.all {
    exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    exclude group: 'org.springframework.boot', module: 'logback-classic'
    exclude group: "org.slf4j"
}

运行 bootRun 此时给出构建错误并表示这些包不存在

我也试过通读 DEBUG CONSOLE 中的 URL:http://www.slf4j.org/codes.html#multiple_bindings 但我没有找到任何对 Gradle 有用的东西,因为解决方案只是Maven.

此时我不确定还能做什么。

有什么想法吗?提前致谢。

Spring Boot 本身依赖于 SLF4J 和 Logback 作为其实现。您需要从配置中删除 implementation 'org.slf4j:slf4j-simple:1.7.21'