Ошибка пути класса Maven при нескольких привязках SLF4J - PullRequest
0 голосов
/ 01 июля 2018

Я получаю эту ошибку при попытке выполнить MAVEN INSTALL. Я пробовал исключения, но не уверен, где включить в файл POM. Позвольте мне, как и какие теги исключения я должен включить в мой файл POM. Я также прилагаю свой фрагмент pom-файла, в который нужно включить исключение`SLF4J: путь к классу содержит несколько привязок SLF4J.

SLF4J: найдено связывание в [Баночка: Файл: / C: /Users/147188/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar / орг / SLF4J / осущ / StaticLoggerBinder .class]

SLF4J: найдено связывание в [Баночка: Файл: / C: /Users/147188/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.10.0/log4j-slf4j-impl-2.10.0.jar / орг /slf4j/impl/StaticLoggerBinder.class]

SLF4J: см. http://www.slf4j.org/codes.html#multiple_bindings для объяснение. SLF4J: фактическая привязка имеет тип [Ch.qos.logback.classic.util.ContextSelectorStaticBinder]

Файл POM:

<!-- Start of required part to make log4j work -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
</exclusions> 
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>

    <exclusions>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
        <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>
    <exclusions>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
</exclusions> 
</dependency>
        <!-- End of required part to make log4j work -->

Ответы [ 3 ]

0 голосов
/ 16 сентября 2018

1 прогон

mvn dependency:tree

чтобы узнать, какой пакет импортирует org.slf4j

2 оставь один и исключи другой

   <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
0 голосов
/ 25 июня 2019

Правильный способ исключить ведение журнала по умолчанию и настроить log4j для ведения журнала. Добавьте эту зависимость в проект Spring Boot, если ее там еще нет

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

См. Spring Logging - How To .

0 голосов
/ 03 июля 2018

Это сообщение указывает на то, что вы вводите и logback-classic, и log4j-slf4j-impl, которые оба хотят быть каркасом ведения журнала для SLF4J, к которому нужно привязаться. Если вы не уверены, какая зависимость влечет за собой какие другие зависимости, я считаю очень полезным запустить mvn dependency: tree , чтобы увидеть используемое дерево зависимостей. Это должно дать вам достаточно информации, чтобы выяснить, какую привязку каркаса логирования вам нужно исключить.

В документации , на которую указывает предупреждение , написано:

Встроенные компоненты, такие как библиотеки или платформы, не должны объявлять зависимость от какой-либо привязки SLF4J, а зависят только от slf4j-api. Когда библиотека объявляет зависимость времени компиляции от привязки SLF4J, она накладывает эту привязку на конечного пользователя, тем самым сводя на нет цель SLF4J. Когда вы сталкиваетесь со встроенным компонентом, объявляющим зависимость времени компиляции от любого связывания SLF4J, пожалуйста, найдите время, чтобы связаться с авторами указанного компонента / библиотеки и просить их исправить их.

Вы в значительной степени хотите исключить все действующие каркасы ведения журналов из всех зависимостей, поэтому единственная используемая среда ведения журналов - это та, которую вы явно добавили. Я даже часто нахожу полезным установить некоторые правила maven-inspecer-plugin bannedDependencies , чтобы избежать случайного добавления другой структуры ведения журнала при обновлении моих зависимостей. Также может быть полезно использовать разделы dependencyManagement в POM, чтобы все ваши зависимости использовали одну и ту же версию slf4j-api.

...