我是一個在使用slf4j Logger和LoggerFactory在一個子jar(假設CHILD.jar)時遇到的一個問題。 我在WebSphere中部署了一個EAR。耳結構是像如下─slf4j記錄器,LoggerFactory不能在運行時從一個子jar
父耳>
- META-INF
- 項目特定依賴罐子
- 項目分模塊被綁定到罐子
- 共享記錄-1.0。 4.jar
- common-logging-api-1.1.jar
- CHILD.jar
在CHILD.jar的MANIFEST.MF我們不給予任何CLASSPTH條目這CHILD.jar被其他幾個應用程序,並與其他應用程序可能無法使用任何同SLF4J實現者。 下面是清單的文件結構 -
清單-版本:1.0
內建的jdk:1.7.0
內置者:C12560
歸檔-版本:叢歸檔
創建人:Apache Maven 3.0.4
在我們的應用程序中,我們將所有jar保存在存在CHILD.jar的相同層次結構中。 現在部署時,不會引發異常。在運行時,它拋出的InvocationTargetException(和的NoClassDefFoundError)在所有這些類別,我們已經使用org.slf4j.Logger和org.slf4j.LoggerFactory。 如果我們註釋掉所有這些記錄器條目,應用程序工作正常,並且在運行時不會引發異常。
即使我們使用org.apache.log4j.Logger ,而不是 org.slf4j.Logger,代碼工作在運行時(注意:log4j的-1.2.13.jar存在於同一層的孩子。罐)。
查詢- slf4j沒有得到它的實現者嗎? 任何罐子我都必須包含在與CHILD.jar相同的層次中?
請注意 -我都試過,包括JCL-過SLF4J罐子log4j的環比slf4j.jar(和去掉了共logging.jar)在同一層CHILD.jar但它沒有工作。
任何幫助,高度讚賞。