2010-08-17 70 views
2

我構建了一個REST Web服務(使用JAX-RS,Spring,Spring JMS和ActiveMQ)。我很驚訝,當我將它部署到Tomcat 5.5.23時,我得到一個JSF罐子是必需的異常?!log4j是否需要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 /班):

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 

任何想法如何解決這個問題?

+0

這是否錯誤當你只刪除log4j.properties文件時就離開了。 – 2010-08-17 19:03:00

+0

如果我這樣做,我會得到以下錯誤(當啓動tomcat時): log4j:警告沒有appender可以找到記錄器(org.apache.commons.digester.Digester.sax)。 log4j:WARN請正確初始化log4j系統。 2010年8月17日下午12時24分22秒開始org.apache.catalina.core.StandardContext嚴重 :錯誤listenerStart – wsb3383 2010-08-17 19:24:03

+0

如果我刪除它,我得到以下錯誤(啓動時的Tomcat): 的log4j:WARN無可以爲記錄器找到appender(org.apache.commons.digester.Digester.sax)。 log4j:WARN請正確初始化log4j系統。 2010年8月17日下午12時24分22秒開始org.apache.catalina.core.StandardContext嚴重 :錯誤listenerStart – wsb3383 2010-08-17 19:24:55

回答

1

聽起來像一個類加載器層次結構問題。您應該將log4j放在WAR文件中,而不是放在Tomcat的共享庫中。

此外,我在Tomcat 5.5中修復了Tomcat 5.5中的一些問題。您可能需要考慮升級。

+0

這是一些類問題: MyEclipse自動將JSTL和JSF jar放在我的lib路徑中,另外我注意到JSTL中有一個類「Logger」(org.apache.taglibs.standard.lang.jstl。記錄器),一旦我使用完整的apache log4j軟件包名稱(org.apache.log4j.Logger)來聲明我的記錄器類,它就可以工作了! – wsb3383 2010-08-17 21:37:12

2

我希望看到這一點,如果你在你的web.xml必須org.apache.myfaces.webapp.StartupServletContextListener參考,如:

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

可以驗證有沒有這樣的元素?

+0

我有它刪除,但我仍然得到: 的log4j:警告沒有附加目的地可能是找到記錄器(org.apache.commons.digester.Digester.sax)。 log4j:WARN請正確初始化log4j系統。 Aug 17,2010 12:43:02 PM org.apache.catalina.core.StandardContext start SEVERE:錯誤監聽器開始 – wsb3383 2010-08-17 19:43:09

+0

您是否添加了log4j.properties文件?你有log4j jar的WEB-INF/lib嗎? – Brabster 2010-08-17 19:51:24

+0

是的,我沒有添加.properties文件,但我的應用程序的web-inf中沒有log4j jar,因爲我注意到TOMCAT_HOME/shared/lib下有一個log4j-1.2.8.jar。我需要將它添加到我的WEB-INF文件夾嗎? – wsb3383 2010-08-17 19:56:03

1

進行以下的依賴關係(如果存在)中行家所提供: 的javax的JavaEE-API 6.0範圍:提供

的javax.servlet的javax.servlet-API 3.0.1範圍:提供