Подтвердить что ты не робот

NoSuchMethodError с API SLF4J

При использовании с slf4j,

String test = blahblahblah;
logger.info("{}",test);

След, как показано ниже

java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;

at org.slf4j.impl.JDK14LoggerAdapter.info(JDK14LoggerAdapter.java:304)
4b9b3361

Ответ 1

Похоже, у вас есть неправильная совпадение версий между различными API-интерфейсами SLF4J и интеграционными библиотеками. SLF4J чрезвычайно дергается, когда дело доходит до совместимости версий (например, 1.6.x не обратно совместим с 1.5.x).

Убедитесь, что разные версии JAR совпадают, и убедитесь, что дубликатов JAR нет в пути к классам.

Ответ 2

Я получал эту ошибку:

SLF4J: The requested version 1.6 by your slf4j binding is not compatible with [1.5.5, 1.5.6]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
.
.
.

Теперь я просто прокомментировал строку с версией pom.xml, как показано ниже, и теперь она работает:

    <dependency> 
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <!-- <version>1.6.5</version> -->
    </dependency>

Ответ 3

Также убедитесь, что вы удаляете в Glassfish извне (не локально), чтобы удалить дубликаты зависимостей в папке lib установки Glassfish на этом сервере.

В моем случае все работало нормально локально, но после его развертывания на сервере я получил эту ошибку.

Ответ 4

Похоже, у вас есть другая версия класса MessageFormatter, чем класс JDK14LoggerAdapter. Контролируйте свой путь к классу.

Ответ 5

Я ожидаю, что это из-за несовместимой версии (например, если вы используете приложение 6.0 и держите файл jar (slf4j 1.5) или удерживаете оба (slf4j 1.5 и 1.6)), тогда исключение может быть вызвано.

Предложение

пойдите для правильной версии не помещайте более одного файла версии (slf4f 1.5 и slf4j 1.6) в путь сборки, удаляйте соответствующий

и

тогда убедитесь, что вы его получите.