我试图在我的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文件:
怎么了?
答案 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>