Sto sviluppando un'applicazione GWT. Sta usando RPC per raccogliere informazioni da un sistema interno. Lo fa usando un contenitore di libreria, chiamiamolo alpha.jar. Stiamo usando questo jar in molte applicazioni in modo che funzioni bene e sia costruito con ANT, all'esterno di eclissi.eccezione non prevista: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
Alcune classi nei riferimenti alpha.jar LOG4J2 e anche molti altri vasi esterni, quindi quando eseguiamo un'applicazione passiamo un classpath a tutti quelli e tutto funziona perfettamente. Si prega di notare che questo non è un semplice problema per principianti. Alpha.jar funziona come dovrebbe, comprese le chiamate a Log4J.
Il problema:
In Eclipse, ho questo progetto di applicazione GWT e anche il progetto Alpha.jar (con il codice sorgente, ovviamente). La parte server deve instaziare gli oggetti alfa e comunicare al sistema alfa.
Quando si esegue questa operazione in GWT aggiungendo un riferimento percorso build al progetto Alpha, la mia app GWT funziona correttamente.
Quando al posto del riferimento del progetto includo (in war/WEB-INF/lib) il alpha.jar ed eseguo l'app, ottengo l'errore nel titolo la prima volta che istanziamo una classe da alpha.jar.
Non ci sono peculiarità nel modo in cui viene costruito alpha.jar, quindi in pratica dovrebbe essere la stessa cosa del progetto in eclissi, giusto?
notare quanto segue:
*) vasi dipendenti del alpha.jar sono anche in guerra/WEB-INF/lib. log4j2-core, log4j-api e molti altri (apache common ad esempio)
*) Se rimuovo alpha.jar (e il codice che lo chiama) e invece aggiungo semplicemente il codice che ha chiamato LOG4J2, quel codice funziona anche bene!
Come mai ottengo questo strano errore quando uso il JAR ?? Nota anche NoClassDefFoundError, non è la più comune ClassNotFoundException. Pls see What causes and what are the differences between NoClassDefFoundError and ClassNotFoundException?
Se hai bisogno di maggiori informazioni fammi sapere.
Potete fornire il proprio script di build ... probabilmente si sta perdendo una dipendenza Log4J necessario effettuare il login messaggi. E controlla il tuo Java runtime/SDK in Eclipse e Ant (dovrebbe essere lo stesso) – Drejc
No, non mi manca una dipendenza. Per favore, leggi di nuovo la domanda. –
Scusa ma dalla descrizione del tuo problema non sono in grado di capire cosa stai facendo esattamente e dove si trova il problema - quindi nessuno ha risposto alla tua domanda finora. – Drejc