log4j需要JSF jar吗?

时间:2010-08-17 19:00:42

标签: java tomcat jsf log4j

我构建了一个REST Web服务(使用JAX-RS,Spring,Spring JMS和ActiveMQ)。我很惊讶当我将它部署到Tomcat 5.5.23时,我得到一个例外,需要JSF jar?!

Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.ClassNotFoundException: org.apache.myfaces.webapp.StartupServletContextListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3712)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)

Web服务工作正常,直到我在不同的类中添加log4j功能,这是我的log4j.properties文件(我把它放在WEB-INF / classes中):

log4j.rootCategory=INFO, S

log4j.logger.com.dappit.Dapper.parser=ERROR
log4j.logger.org.w3c.tidy=FATAL

#------------------------------------------------------------------------------
#
#  The following properties configure the console (stdout) appender.
#  See http://logging.apache.org/log4j/docs/api/index.html for details.
#
#------------------------------------------------------------------------------
log4j.appender.S = org.apache.log4j.ConsoleAppender
log4j.appender.S.layout = org.apache.log4j.PatternLayout
log4j.appender.S.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

如果您在web.xml中引用org.apache.myfaces.webapp.StartupServletContextListener,我希望看到这一点,例如:

<listener>
     <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

你能证实没有这样的元素吗?

答案 1 :(得分:1)

听起来像是一个类加载器层次结构问题。您应该将log4j包含在WAR文件中,而不是将其放在Tomcat的共享库中。

另外,我在Tomcat 6.0中修复了Tomcat 5.5的一些问题。您可能需要考虑升级。

答案 2 :(得分:1)

按照提供的方式在maven中创建以下依赖项(如果存在): javax javaee-api 6.0范围:提供

javax.servlet javax.servlet-api 3.0.1范围:提供