2017-06-16 34 views
-1

我是一個在使用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.Loggerorg.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但它沒有工作。

任何幫助,高度讚賞。

回答

0

如果您想使用jcl或log4j作爲slf4j的實現者,您需要的是slf4j-jcl.jar或slf4j-log4j.jar。

此外,當得到一個NoClassDefFoundError時,你應該通過完整的堆棧跟蹤。通常它是由其他一些例外引起的。

相關問題