Plusieurs bibliothèques en utilisant log4j
Question
J'écris une petite application Java et avoir des problèmes avec log4j qui semble être causée par de multiples bibliothèques indépendantes qui tentent d'utiliser simultanément:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.log4j.Logger.info(Ljava/lang/String;)V
at twitter4j.internal.logging.Log4JLogger.info(Log4JLogger.java:85)
at twitter4j.internal.logging.Logger.<clinit>(Logger.java:72)
at twitter4j.http.BasicAuthorization.<clinit>(BasicAuthorization.java:43)
at twitter4j.http.AuthorizationFactory.getBasicAuthorizationInstance(AuthorizationFactory.java:66)
at twitter4j.TwitterStreamFactory.getInstance(TwitterStreamFactory.java:121)
at org.voltdb.twitter.drivers.Collect.main(Collect.java:13)
Les deux bibliothèques que je utilise sont Twitter4J et VoltDB . Les deux sont sous la forme de Jars. Si je l'utilise soit dans l'isolement, je ne cours pas ce problème; à la fois fin de travail eux-mêmes.
Il serait acceptable pour désactiver le composant log4j soit bibliothèque si le problème est résolu.
La solution 2
Je suis tombé sur un réponse à un problème de l'exploitation forestière de Twitter4J qui montre comment désactiver journalisation :
-Dtwitter4j.loggerFactory=twitter4j.internal.logging.StdOutLoggerFactory
L'ajout de cette propriété fait disparaître l'exception.
Autres conseils
Etes-vous sûr que vous utilisez la bonne version de log4j tel que requis par les deux bibliothèques? Votre message d'erreur semble indiquer dans la version log4j incorrecte de l'OMI.