Я создаю небольшое приложение Java и надеюсь использовать логбэк для ведения журнала.
Мое приложение зависит от более старого проекта, который ведет журнал через
org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1
... так что я планировал использовать
org.slf4j | jcl-over-slf4j | 1.5.6
... перенаправить журнал JCL на
org.slf4j | slf4j-api | 1.6.0
... и в конечном итоге
ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22
поэтому мое приложение может войти в систему через логбэк через свой slf4j API, в то время как старый код библиотеки может войти в то же место через перенаправление.
Увы, это приводит к
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)
Я пробовал более высокие и низкие номера версий на некоторых из этих jar-файлов, а также копался в документации API и тому подобном ... но я не могу найти и решить проблему.
Помогите, пожалуйста?
Хотя логбэк считается «стратегической» структурой ведения журнала, у меня есть некоторая свобода действий, в которой я в конечном итоге использую механизм ведения журнала. Тем не менее, я бы надеялся использовать либо logback, либо log4j, и я определенно хочу объединить логирование старого проекта с тем, чем в итоге окажется «новый» фреймворк логирования, с помощью общей конфигурации.
источник
SLF4J версии 1.5.11 и 1.6.0 несовместимы (см. Отчет о совместимости ), потому что список аргументов
org.slf4j.spi.LocationAwareLogger.log
метода был изменен (добавлен Object [] p5):SLF4J 1.5.11:
SLF4J 1.6.0:
См. Отчеты о совместимости для других версий SLF4J на этой странице .
Вы можете создавать такие отчеты с помощью инструмента проверки соответствия требованиям japi .
источник
Просто чтобы помочь тем, кто находится в похожей на меня ситуации ...
Это может быть вызвано тем, что зависимая библиотека случайно включила старую версию slf4j. В моем случае это была тика-0.8. См. Https://issues.apache.org/jira/browse/TIKA-556.
Обходной путь - исключить компонент, а затем вручную зависит от правильной или исправленной версии.
НАПРИМЕР.
источник