2010-04-14 60 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设备上发生这种情况有所帮助。