2009-05-29 80 views
3

當我在我的Maven的pom.xml文件中包含hibernate-c3p0時,我得到一個運行時NoClassDefFoundError,因爲它找不到org.slf4j.impl.StaticLoggerBinder。我的印象是Maven會解決這種依賴 - 所以如果c3p0需要slf4j,那麼slf4j會被下載幷包含在內。Maven不解決hibernate-c3p0對slf4j的依賴

pom.xml文件有:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-c3p0</artifactId> 
    <version>3.3.1.GA</version> 
</dependency> 

回答

5

這可能是因爲SLF4J是一個可選的依賴。你可以非常容易地檢查使用的依賴插件

mvn dependency:tree 

會告訴你的到底是什麼要看什麼樹上市的傳遞依賴。如果slf4j不是dep,可以將其明確添加。

HTH

4

NoClassDefFoundErrororg.slf4j.impl.StaticLoggerBinder表示沒有SLF4J綁定都會被找到。通過傳遞性,hibernate-c3p0依賴於slf4j-api。但是,slf4j-api在沒有綁定的情況下無法運行。有關詳細信息,請參見SLF4J用戶手冊:www.slf4j.org/manual.html

您只需將slf4j-simple,slf4j-log4j12,slf4j-jdk14或logback-classic之一添加爲依賴項。前面提到的SLF4J手冊頁應該有詳細信息。

+1

或着名的slf4j-nop,它很快:) – whiskeysierra 2010-02-08 23:15:07