Domanda

Sto scrivendo una piccola applicazione Java e avendo qualche problema con log4j che sembra essere causato da molteplici, librerie indipendenti che cercano di utilizzare simultaneamente:

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)

I due librerie che sto usando sono Twitter4J e VoltDB . Entrambi sono in forma di JAR. Se uso sia in isolamento, non corro in questo problema; entrambi funzionano bene da soli.

Sarebbe accettabile per disattivare il componente log4j di una libreria se questo ha risolto il problema.

È stato utile?

Soluzione 2

mi sono imbattuto in una risposta ad un Twitter4J problema di registrazione che mostra come disabilitare registrazione :

-Dtwitter4j.loggerFactory=twitter4j.internal.logging.StdOutLoggerFactory

L'aggiunta di questa proprietà ha fatto l'eccezione scomparire.

Altri suggerimenti

Sei sicuro si sta utilizzando la versione corretta di log4j, come richiesto da entrambe le biblioteche? Il tuo messaggio di errore sembra indicare nella versione log4j errata IMO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top