Estou construindo um pequeno aplicativo Java e espero usar o logback para registro.
Meu aplicativo depende de um projeto mais antigo que faz seu registro via
org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1
... então meu plano era usar
org.slf4j | jcl-over-slf4j | 1.5.6
... para redirecionar o registro JCL para
org.slf4j | slf4j-api | 1.6.0
... e finalmente para
ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22
para que meu aplicativo possa fazer logon por meio de logback por meio de sua API slf4j, enquanto o código da biblioteca antiga pode fazer logon no mesmo local por meio do redirecionamento.
Infelizmente, isso resulta em
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)
Tentei números de versão mais altos e mais baixos em alguns desses jars e também vasculhei a documentação da API e tal ... mas não consigo encontrar e resolver o problema.
Ajuda por favor?
Embora o logback seja considerado a estrutura de registro "estratégica", tenho alguma margem de manobra no mecanismo de registro que utilizo. Espero usar logback ou log4j, e definitivamente quero mesclar o log do projeto antigo em qualquer que seja a "nova" estrutura de log, por meio de uma configuração comum.
fonte
As versões SLF4J 1.5.11 e 1.6.0 não são compatíveis (consulte o relatório de compatibilidade ) porque a lista de argumentos do
org.slf4j.spi.LocationAwareLogger.log
método foi alterada (Object adicionado [] p5):SLF4J 1.5.11:
SLF4J 1.6.0:
Consulte os relatórios de compatibilidade para outras versões SLF4J nesta página .
Você pode gerar tais relatórios pela ferramenta japi-compliance-checker .
fonte
Só para ajudar quem está em situação semelhante à minha ...
Isso pode ser causado quando uma biblioteca dependente acidentalmente empacotou uma versão antiga do slf4j. No meu caso, foi tika-0.8. Veja https://issues.apache.org/jira/browse/TIKA-556
A solução alternativa é excluir o componente e, em seguida, depender manualmente da versão correta ou corrigida.
POR EXEMPLO.
fonte