unerwartete Ausnahme: java.lang.NoClassDefFoundError: org / apache / log4j / LogManager

Ich entwickle eine GWT-Anwendung. Es verwendet RPC, um Informationen von einem internen System zu sammeln. Verwenden Sie dazu ein Bibliotheks-JAR, nennen wir es alpha.jar. Wir verwenden dieses Glas in vielen Anwendungen, so dass es einwandfrei funktioniert und außerdem mit ANT außerhalb von Eclipse erstellt wurde.

Einige Klassen in alpha.jar verweisen auf LOG4J2 und auch auf viele andere externe Gläser.wenn wir eine Anwendung ausführen, übergeben wir all diesen einen Klassenpfad, und alles funktioniert gut. Bitte beachten Sie, dass dies kein einfaches Anfängerproblem ist. Die Datei alpha.jar funktioniert ordnungsgemäß, einschließlich der Aufrufe von Log4J.

Das Problem

In Eclipse habe ich dieses GWT-Anwendungsprojekt und auch das Alpha.jar-Projekt (natürlich mit Quellcode). Der Serverteil muss Alpha-Objekte installieren und mit dem Alpha-System kommunizieren.

Wenn Sie dies in GWT tun, indem Sie einen Build-Pfad-Verweis auf das Alpha-Projekt hinzufügen, funktioniert meine GWT-App einwandfrei.

Wenn ich anstelle der Projektreferenz die Datei alpha.jar (in war / WEB-INF / lib) einbinde und die App ausführe, wird der Fehler im Titel angezeigt, wenn ich zum ersten Mal eine Klasse aus der Datei alpha.jar instanziiere.

Es gibt keine Besonderheiten, wie die alpha.jar aufgebaut ist, also sollte es im Grunde das gleiche sein wie das Projekt in Eclipse, oder?

Beachten Sie das Folgende

*) Die abhängigen Jars von alpha.jar befinden sich ebenfalls in war / WEB-INF / lib. log4j2-core, log4j-api sowie einige andere (zum Beispiel Apache)

*) Wenn ich die Datei alpha.jar (und den Code, der sie aufruft) entferne und stattdessen nur den Code LOG4J2 hinzufüge, funktioniert dieser Code auch einwandfrei!

Wie kommt es, dass ich diesen seltsamen Fehler erhalte, wenn ich das JAR verwende? Beachten Sie auch den NoClassDefFoundError, der nicht die üblichere ClassNotFoundException ist. Bitte sieheWelche Ursachen und welche Unterschiede bestehen zwischen NoClassDefFoundError und ClassNotFoundException?

Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage