Spring MVC初始化导致Log4J异常

时间:2012-03-26 18:49:44

标签: spring-mvc log4j weblogic

在我的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)       截断。请参阅日志文件以获取完整的堆栈跟踪

基本的东西:

  1. log4j-1.2.16.jar在maven POM中定义,位于应用程序库中。

  2. 由于它是一个weblogic服务器,我在weblogic.xml文件中有以下内容试图防止冲突:

    <wls:prefer-application-packages>
        <wls:package-name>org.apache.log4j.*</wls:package-name>
    </wls:prefer-application-packages>
    
  3. (更新)我在应用程序的maven POM中手动排除了公共日志记录。

  4. (更新)我已经在我的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>
    
  5. 基本上,我需要将基本的css和js目录排除为WEB-INF /下的单个目录,其中包含一些我不想编写控制器的jspf文件(jquery superfish使用的下拉菜单定义)

    任何帮助?

1 个答案:

答案 0 :(得分:2)

将slf4j-log4连接器添加到POM:

      <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>