Как мне устранить ошибку пути к классу входа в систему slf4j в Java и Spring Boot? - PullRequest
0 голосов
/ 15 марта 2019

Так что я сейчас использую Twilio для отправки и получения текстовых сообщений. Я использую Spring Boot для каркаса приложения, Gradle в качестве инструмента для сборки и VSCode в качестве IDE.

Он успешно собирается при выполнении bootRun, однако мой локальный сервер не запускается и вызывает следующие исключения в 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).

Вот операторы реализации в моем файле build.gradle, которые имеют отношение к тому, что я делаю

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

Вот несколько вещей, которые я попытался решить:

Я пытался вставить следующее в свой файл Gradle из другого вопроса StackOverflow

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 в этот момент выдает ошибку сборки и говорит, что эти пакеты не существуют

Я также попытался прочитать URL-адрес в DEBUG CONSOLE: http://www.slf4j.org/codes.html#multiple_bindings и не нашел ничего полезного для Gradle, поскольку решения были только для Maven.

На данный момент я не уверен, что еще делать.

Есть идеи? Заранее спасибо.

1 Ответ

2 голосов
/ 15 марта 2019

Spring Boot сам по себе поставляется с зависимостью от SLF4J и Logback в качестве его реализации.Вам необходимо удалить implementation 'org.slf4j:slf4j-simple:1.7.21' из вашей конфигурации.

...