Journalisation de l'incompatibilité
Je suis en train de construire une petite application Java et dans l'espoir d'utiliser logback pour la journalisation.
Mon application a une dépendance sur un ancien projet qui fait son journalisation via
org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1
...donc mon plan était d'utiliser
org.slf4j | jcl-over-slf4j | 1.5.6
...pour rediriger le JCL journalisation pour
org.slf4j | slf4j-api | 1.6.0
...et, finalement, à
ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22
donc mon application peut se connecter par le biais de logback par l'intermédiaire de son slf4j API, alors que l'ancienne bibliothèque de code peuvent se connecter au même endroit par l'intermédiaire de la redirection.
Hélas, il en résulte
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)
J'ai essayé supérieur et inférieur de la verision numéros sur certains de ces pots et aussi de creuser par le biais de la documentation de l'API et de tel... mais je ne suis pas en mesure de trouver et de résoudre le problème.
Aider, s'il vous plaît?
Bien que logback est considéré comme "stratégique" de journalisation, j'ai une certaine marge de manœuvre dans lequel le mécanisme de journalisation j'ai finalement utiliser. J'avais l'espoir de l'utiliser soit logback ou log4j, si, et j'ai vraiment envie de fusionner l'ancien projet de l'exploitation forestière, et ce, de la "nouvelle" de journalisation finit, par l'intermédiaire d'une configuration commune.
Vous devez vous connecter pour publier un commentaire.
Que vous mélangez la version 1.5.6 de la jcl pont avec la version 1.6.0 de la slf4j-api; cela ne peut pas fonctionner à cause de quelques changements dans 1.6.0. Utiliser les mêmes versions pour les deux, c'est à dire 1.6.1 (la dernière). J'utilise le jcl-sur-slf4j pont tout le temps et il fonctionne très bien.
SLF4J 1.5.11 et 1.6.0 versions ne sont pas compatibles (voir rapport de compatibilité) parce que la liste d'arguments de
org.slf4j.spi.LocationAwareLogger.log
méthode a été modifié (ajout d'Objet[] p5):SLF4J 1.5.11:
SLF4J 1.6.0:
Voir les rapports de compatibilité pour les autres SLF4J versions sur cette page.
Vous pouvez générer ces rapports par le japi-conformité-checker outil.
Juste pour aider ceux qui sont dans une situation semblable à moi-même...
Cela peut être causé lorsque la charge de la bibliothèque a accidentellement regroupés une ancienne version de slf4j. Dans mon cas, c'était tika-0.8. Voir https://issues.apache.org/jira/browse/TIKA-556
Le contourner est d'exclure le composant manuellement, puis dépendent de la bonne ou de la version corrigée.
Par exemple.