2010-04-14 72 views
28

我已經部署了一個Apache Wicket Web應用程序,它使用Spring和Hibernate到我的Tomcat 5.5實例中。當我導航到Tomcat管理器界面時,我看到我部署的Web應用程序未運行。當我按'開始'時,我得到以下錯誤信息; 「失敗 - 上下文路徑應用/意大利麪條無法啓動」。如何在Tomcat 5.5中部署web-app時解決Error listenerStart?

我catalina.log包含以下內容:從web.xml中

Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class 
Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 
Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 
Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/spaghetti] startup failed due to previous errors 

摘錄:

 
    <listener> 
     <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 

任何幫助是極大的讚賞。

+0

看看這個:http://blog.trifork.com/2011/03/18/debugging-the-dreaded-severe-error-listenerstart-and-severe-error-filterstart-tomcat-error-messages/ – 2015-11-12 19:02:33

回答

31
/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar 
/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar 

你應該沒有必須在/WEB-INF/lib任何特定的服務器庫。將它們留在應用程序服務器自己的庫中。它只會導致類路徑中的衝突。擺脫/WEB-INF/lib中的所有應用程序特定庫(如果您已將它們放在那裏,也可以在JRE/libJRE/lib/ext之間)。

Web應用程序庫中包含特定於應用程序服務器的庫的一個常見原因是,初學者認爲這是解決編譯錯誤的正確方法,其中javax.servlet類無法解決。把它們放在webapp的庫中是錯誤的解決方案。您應該在編譯期間在類路徑中引用它們,例如javac -cp /path/to/server/lib/servlet.jar等,或者如果您使用的是IDE,則應該將該服務器集成到IDE中並將該Web項目與服務器相關聯。然後,IDE將自動在webapp項目的類路徑(構建路徑)中使用特定於服務器的庫。

+0

感謝BalusC的幫助。我沒有明確地將servlet-api或jsp-api添加到我的pom.xml中的依賴關係列表中,實際上他們沒有在那裏列出。也許這是我擁有的依賴之一的依賴。 我會給你一個建議。 – John 2010-04-15 09:07:26

+0

我有類似的問題,在Eclipse中的WTP中,位於'/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/...'它從Servlet 2.5升級到3.0之後開始,所以我想通過右鍵單擊服務器,然後「清潔Tomcat工作目錄」應該擦除它。但事情不斷回來。最終,'mvn dependency:tree'顯示一些依賴包括'j​​avax.servlet:servlet-api:jar:2.5'和'org.mortbay.jetty:servlet-api:jar:2.5-20081211'。 – Arjan 2012-08-27 19:13:02

59

我發現按照這些說明幫助找出問題所在。對我來說,那是殺手,不知道什麼壞了。

http://mythinkpond.wordpress.com/2011/07/01/tomcat-6-infamous-severe-error-listenerstart-message-how-to-debug-this-error/

從鏈路

在Tomcat的6或以上引用,默認記錄器是」 java.util.logging的」記錄器,而不是Log4J的。所以如果你想添加一個「log4j.properties」文件 - 這是行不通的。 Java的utils的記錄查找一個名爲「logging.properties」文件作爲說明在這裏: http://tomcat.apache.org/tomcat-6.0-doc/logging.html

所以去調試細節在你的「/ WEB-INF/classes中」文件夾中創建「logging.properties」文件你的戰爭和你全部設置。

現在,當你重新啓動Tomcat時,你會看到你所有的調試都在它的全部榮耀中!

樣品logging.properties文件:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler 
+0

謝謝!正如你所說的,神奇地我們可以檢查問題的真正原因,並停止浪費時間。 :-)乾杯。 – 2015-03-30 17:42:24

+1

我希望我可以多次提出這個答案。 – Chad 2015-04-21 02:34:52

+2

這只是(/我)問題的一部分。偵聽器啓動錯誤發生在'catalina.out'中,而堆棧跟蹤寫入'localhost- .out'。因此,一定要檢查所有的tomcat日誌文件的堆棧跟蹤(可能通過使用'ps aux | grep tomcat'找出pid並使用'lsof -p '找出tomcat的打開文件) – Herbert 2015-11-30 09:03:30

7

我遇到這個錯誤時,我下的編譯應用程序的JDK是從Tomcat JVM不同。我證實了Tomcat管理器運行的是jvm 1.6.0,但是該應用程序是在java 1.7.0下編譯的。

升級Java並更改我們的啓動腳本(/etc/init.d/tomcat)中的JAVA_HOME後,錯誤消失了。

1

由Tom Saleeba提供的回答非常有幫助。 今天我也掙扎着同樣的錯誤

2015年4月28日下午7點53分27秒org.apache.catalina.core.StandardContext startInternal 嚴重:錯誤listenerStart

我跟着建議並添加了logging.properties文件。以下是我的失敗原因:

java.lang.IllegalStateException:無法設置Web應用程序根系統 屬性時WAR文件未展開

問題的根本原因是監聽器( Log4jConfigListener),我添加到web.xml中。根據鏈接SEVERE: Exception org.springframework.web.util.Log4jConfigListener,此偵聽器無法添加到未展開的WAR中。

有人可能會對OpenShift JBoss設備上發生這種情況有所幫助。