2013-07-02 2 views
1

Mon modèle de package est que j'ai deux fichiers war dans un fichier EAR et que tous les fichiers jars communs sont placés dans le répertoire EAR/lib. J'utilise apache fop jar pour imprimer certaines sorties en format PDF. Maintenant, quand je tente d'imprimer la sortie je reçois l'exception ci-dessousLog4J introuvable dans classpath

`

]] Root cause of ServletException. 
    java.lang.NoClassDefFoundError: org/apache/log4j/Category 
     at org.apache.avalon.framework.logger.Log4JLogger.info(Log4JLogger.java:73) 
     at org.apache.fop.fo.FOTreeBuilder.startDocument(FOTreeBuilder.java:239) 
                            om.sun.org.apache.xml.internal.serializer.ToSAXHandler.startDocumentInternal(ToSAXHandler.java:95) 
     at com.sun.org.apache.xml.internal.serializer.SerializerBase.startDocument(SerializerBase.java:1216) 
     at GregorSamsa.transform() 
     Truncated. see log file for complete stacktrace 

Caused By: java.lang.ClassNotFoundException: org.apache.log4j.Category 
     at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:280) 
     at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:253) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:177) 
     Truncated. see log file for complete stacktrace` 

Je ne sais pas pourquoi sa passe depuis le fop.jar fait partie d'une guerre spécifique et j'ai essayé de placer le log4j.jar dans la guerre specfici aussi bien mais à aucune aide.

+0

Peut-être qu'il y a une autre implémentation de log4j utilisée par votre moteur servlent qui n'a pas cette méthode? – fge

+0

Il est dans le classpath comme le sont tous les autres pots. – sidshu

+0

Oui mais que se passe-t-il si votre serveur _app a une version qui a la priorité sur la vôtre? – fge

Répondre

1

Je le fais fonctionner enfin.

En fait, fop.jar dépend de avalonXX.jar qui ne faisait pas partie de la guerre mais qui faisait partie du dossier jar commun de l'oreille. J'ai déplacé le fichier jar dans le répertoire war lib et VOILA ... Merci pour les commentaires

1

Je suppose qu'il s'agit d'un problème de chargeur de classe. Bien que vous n'ayez pas spécifié le serveur d'applications que vous utilisez, mais peu importe lequel, vous devez vous assurer que le fichier jar est disponible pour le chargeur de classe, qui charge votre application. Vérifiez les paramètres pour le chargeur de classe de votre oreille et la politique associée.

+0

J'utilise le serveur weblogic. Pouvez-vous être plus précis comment vérifier le paramètre classloader et la politique? – sidshu

+0

@sidshu Pouvez-vous essayer de mettre jar log4j dans $ DOMAIN_DIR/lib? –

+0

est venu près, cela fonctionne de cette façon, mais maintenant le problème est que les journaux pour les deux guerres vont dans un seul fichier journal. – sidshu