inattendu exception: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
Je suis le développement d'une application GWT. C'est à l'aide de RPC pour recueillir des informations à partir d'un système interne. Il le fait en utilisant une bibliothèque de pot, permet de l'appeler alpha.jar. Nous sommes à l'aide de ce bocal dans de nombreuses applications de sorte qu'il fonctionne bien, et btw ses construit avec ANT, en dehors d'eclipse.
Certaines classes dans alpha.jar références LOG4J2 et aussi beaucoup d'autres pots, donc lorsque nous une demande, nous passons un classpath pour tous ceux, et tout fonctionne bien. Veuillez noter que ce n'est pas un simple débutants problème. L'alpha.jar fonctionne comme il se doit, y compris les appels à Log4J.
Le problème:
Dans Eclipse, j'ai cette GWT projet d'application et aussi la Alpha.jar projet (avec le code source bien sûr). La partie serveur doit démarrent des instances alpha objets et de les communiquer à l'alpha du système.
Quand ce faire, dans GWT par l'ajout d'une accumulation de chemin de référence pour le projet Alpha, mon GWT app fonctionne très bien.
Quand je au lieu de la référence du projet comprennent (en war/WEB-INF/lib) le alpha.jar et s'exécute l'application, j'obtiens le message d'erreur dans le titre la première fois que je instancier une classe de alpha.jar.
Il n'existe pas de particularités dans la manière dont les alpha.jar est construit, donc, fondamentalement, il devrait être la même chose que le projet dans eclipse, droit?
Noter les points suivants:
*) La alpha.jar's dépendant pots sont également en war/WEB-INF/lib. log4j2-core, log4j-api ainsi qu'un tas d'autres (apache commun par exemple)
*) Si je supprime le alpha.jar (et le code qui l'appelle) et, au lieu de simplement ajouter le code qui a appelé LOG4J2, que le code fonctionne aussi très bien!
Comment puis-je obtenir cette étrange erreur lorsque vous utilisez le POT?? Notez également la NoClassDefFoundError, ce n'est pas le plus commun ClassNotFoundException. Pls voir Quelles sont les causes et quelles sont les différences entre NoClassDefFoundError et ClassNotFoundException?
Si vous avez besoin de plus d'info, laissez-moi savoir.
Non, je ne suis pas en manque une dépendance. Veuillez lire la question à nouveau.
Désolé, mais à partir de la description de votre problème, je ne suis pas en mesure de comprendre exactement ce que vous faites et où le problème est - donc personne n'a répondu à votre question jusqu'à présent.
Cette autre réponse pourrait être plus pertinente pour certaines personnes avec ce problème. stackoverflow.com/questions/32368758/...
OriginalL'auteur Peter Andersson | 2014-10-13
Vous devez vous connecter pour publier un commentaire.
org.apache.log4j.LogManager
est une classe de log4j 1.2 (pas log4j2).Par conséquent, l'un des votre web app bocaux doivent être de référencement. Le coupable doit être visible dans la trace de la pile.
En fonction de votre situation, vous pouvez simplement ajouter un log4j 1.2 jar de l'application web que les deux versions sont totalement indépendants les uns des autres.
Vous voudrez peut-être regarder à nouveau...
OriginalL'auteur Steve C
Si vous avez l'utilisation de log4j 2 s'il vous plaît ne oubliez pas de nommer votre log4j2.xml au lieu de log4j.xml
OriginalL'auteur albgorski
comme appelés à l'avant:
org.apache.log4j.LogManager
est une classe de log4j 1.2 (pas log4j2).ce problème se réunit lorsque vous combinez l'utilisation de log4j 1.2 et log4j 2.x, peut-être. si vous devez ajouter du pont de l'api de votre projet.
c'est un
Migrating
problème.ajouter ceux que vous
pom.xml
ensuite, vous pouvez utiliser
mvn dependency:resolve
pour voir pas de log4j 1.2se réfère:
Log4j 1.x Adaptateur – Log4j 1.2 Pont - Apache Log4j 1.x Compatibilité de l'API
Log4j Commons Logging Adaptateur Commons Logging Pont - Apache Log4j Commons Logging Pont
OriginalL'auteur Mark Simon