在我的webapp中,我使用Spring MVC作为我的控制器层。但是,使用MVC上下文提供的标记:
<mvn:annotation-driven />
<mvc:resources />
导致log4j异常:
<Mar 26, 2012 1:49:50 PM EDT> <Warning> <HTTP> <BEA-101162> <User defined listener
org.springframework.web.context.ContextLoaderListener failed:
java.lang.NoClassDefFoundError: org/apache/log4j/spi/ThrowableInformation.
java.lang.NoClassDefFoundError: org/apache/log4j/spi/ThrowableInformation
at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:165)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.log(Category.java:856)
at org.slf4j.impl.Log4jLoggerAdapter.log(Log4jLoggerAdapter.java:597)
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225)
Truncated. see log file for complete stacktrace
(LoggingEvent.java:165) 在org.apache.log4j.Category.forcedLog(Category.java:391) 在org.apache.log4j.Category.log(Category.java:856) at org.slf4j.impl.Log4jLoggerAdapter.log(Log4jLoggerAdapter.java:597) 在org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225) 截断。请参阅日志文件以获取完整的堆栈跟踪
基本的东西:
log4j-1.2.16.jar在maven POM中定义,位于应用程序库中。
由于它是一个weblogic服务器,我在weblogic.xml文件中有以下内容试图防止冲突:
<wls:prefer-application-packages>
<wls:package-name>org.apache.log4j.*</wls:package-name>
</wls:prefer-application-packages>
(更新)我在应用程序的maven POM中手动排除了公共日志记录。
(更新)我已经在我的Maven POM中使用了slf4j jar(删除jcl-over-slf4j没有效果):
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
基本上,我需要将基本的css和js目录排除为WEB-INF /下的单个目录,其中包含一些我不想编写控制器的jspf文件(jquery superfish使用的下拉菜单定义)
任何帮助?
答案 0 :(得分:2)
将slf4j-log4连接器添加到POM:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-version}</version>
<scope>runtime</scope>
</dependency>