2013-07-02 124 views
1

我的包模型是我在EAR中有兩個war文件,並且所有常用jar都放在EAR/lib目錄中。在類路徑中找不到Log4J

我使用apache fop jar將某些輸出轉換爲PDF格式。現在,當我嘗試打印輸出我得到以下

`

]] 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` 

不知道爲什麼自從fop.jar它的發生是一個具體的戰爭的一部分,我試圖把在log4j.jar異常specfici戰爭,但沒有幫助。

+0

也許您的servlent引擎使用了另一個log4j實現,它沒有此方法? – fge

+0

它在類路徑中與其他所有罐子一樣。 – sidshu

+0

是的,但如果你的_app server_有一個優先於你的版本呢? – fge

回答

1

我終於做到了。

實際上fop.jar對avalonXX.jar有依賴關係,它不是戰爭的一部分,而是耳朵中常見jar文件夾的一部分。我將jar文件移動到war lib目錄和VOILA中...感謝您的評論

1

我懷疑它是一個類加載器的問題。雖然您尚未指定所使用的應用程序服務器,但無論使用哪一個,都需要確保該jar可用於加載應用程序的類加載器。檢查耳朵的類加載器和相關策略的設置。

+0

我正在使用weblogic服務器。你可以更具體的如何檢查類加載器設置和策略 – sidshu

+0

@sidshu你可以嘗試將log4j jar放入$ DOMAIN_DIR/lib中嗎? –

+0

走近了,它的工作方式,但現在的問題是兩個戰爭的日誌將進入一個單一的日誌文件。 – sidshu

相關問題