Spring中的AbstractMethodError

时间:2014-07-23 06:40:05

标签: java eclipse spring maven logback

我试图在我的Spring项目中使用H2和hibernate存储数据, 我无法摆脱这个:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.AbstractMethodError: ch.qos.logback.classic.Logger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
    at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)

我的pom文件:

http://pastebin.com/hxXyZi9b

怎么了?

2 个答案:

答案 0 :(得分:1)

你提到的slf4j依赖项和plf.xml中使用的spring-core的slf4j lib之间必然存在版本不匹配。

如果您正在使用eclipse,则可以在pom.xml中的Depedency Hierarchy选项卡中轻松检查(通过搜索)。

答案 1 :(得分:0)

来自Spring参考文档:

  

一个常见的选择可能是将Spring桥接到SLF4J,然后提供从SLF4J到的明确绑定   Log4J的。您需要提供4个依赖项(并排除现有的commons-logging):桥,   SLF4J API,与Log4J的绑定以及Log4J实现本身。在Maven,你会这样做   像这样

<dependencies>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.0.BUILD-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.5.8</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.5.8</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.8</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.14</version>
</dependency>