在 Tomcat 5.5 中部署 web-app 时如何解决错误 listenerStart?
Posted
技术标签:
【中文标题】在 Tomcat 5.5 中部署 web-app 时如何解决错误 listenerStart?【英文标题】:How to resolve Error listenerStart when deploying web-app in Tomcat 5.5? 【发布时间】:2011-02-08 03:20:32 【问题描述】:我已经为我的 Tomcat 5.5 实例部署了一个使用 Spring 和 Hibernate 的 Apache Wicket Web 应用程序。当我导航到 Tomcat 管理器界面时,我看到我部署的 Web 应用程序没有运行。当我按“开始”时,我收到以下错误消息; “失败 - 无法启动上下文路径 /spaghetti 处的应用程序”。
我的 catalina.log 包含以下内容:
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
摘自 web.xml:
org.springframework.web.context.ContextLoaderListener非常感谢任何帮助。
【问题讨论】:
看这个:blog.trifork.com/2011/03/18/… 【参考方案1】:我发现遵循这些说明有助于找出问题所在。对我来说,那是杀手,不知道是什么坏了。
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
因此,要了解调试详细信息,请在 WAR 的“/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
【讨论】:
谢谢!正是您所说的,神奇的是,我们可以检查问题的真正原因并停止浪费时间。 :-) 干杯。 这只是(/my)问题的一部分。当堆栈跟踪写入localhost-<date>.out
时,listenerStart 错误发生在catalina.out
。所以一定要检查所有 tomcat 的日志文件的堆栈跟踪(可能通过使用ps aux | grep tomcat
找出 pid 并使用lsof -p <pid>
找出 tomcat 的打开文件)【参考方案2】:
/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
中的所有 appserver 特定库(以及 JRE/lib
和 JRE/lib/ext
,如果您将它们中的任何一个放在其中)。
应用服务器特定的库包含在 webapp 的库中的一个常见原因是初学者认为这是修复无法解析的 javax.servlet
类等编译错误的正确方法。将它们放在 webapp 的库中是错误的解决方案。您应该在编译期间在类路径中引用它们,即javac -cp /path/to/server/lib/servlet.jar
等,或者如果您使用的是 IDE,您应该将服务器集成到 IDE 中并将 Web 项目与服务器关联。然后,IDE 将自动在 webapp 项目的类路径 (buildpath) 中获取特定于服务器的库。
【讨论】:
感谢 BalusC 的帮助。我没有明确地将 servlet-api 或 jsp-api 添加到我的 pom.xml 中的依赖项列表中,实际上它们没有在那里列出。也许它是我拥有的依赖项之一的依赖项。我会考虑你的建议。 我有一个类似的问题,在 Eclipse 中的 WTP 中,在/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/...
它是从 Servlet 2.5 升级到 3.0 后开始的,所以我想右键单击服务器,然后“清理 Tomcat 工作”目录”应该擦除它。但事情一直在回来。最终,mvn dependency:tree
表明某些依赖项同时包括 javax.servlet:servlet-api:jar:2.5
和 org.mortbay.jetty:servlet-api:jar:2.5-20081211
。【参考方案3】:
当我编译应用程序的JDK与tomcat JVM不同时,我遇到了这个错误。我验证了 Tomcat 管理器正在运行 jvm 1.6.0,但该应用程序是在 java 1.7.0 下编译的。
升级 Java 并在我们的启动脚本 (/etc/init.d/tomcat) 中更改 JAVA_HOME 后,错误消失了。
【讨论】:
这正是我的问题,感谢您的解决方案【参考方案4】:Tom Saleeba 提供的回答非常有帮助。 今天我也遇到了同样的错误
2015 年 4 月 28 日晚上 7:53:27 org.apache.catalina.core.StandardContext startInternal 严重:错误 listenerStart
我按照建议添加了 logging.properties 文件。以下是我失败的原因:
java.lang.IllegalStateException:无法设置 Web 应用根系统 WAR 文件未展开时的属性
问题的根本原因是我添加到 web.xml 中的侦听器 (Log4jConfigListener)。根据链接 SEVERE: Exception org.springframework.web.util.Log4jConfigListener ,无法在未展开的 WAR 中添加此侦听器。
如果有人知道这发生在 OpenShift JBoss 设备上,可能会有所帮助。
【讨论】:
以上是关于在 Tomcat 5.5 中部署 web-app 时如何解决错误 listenerStart?的主要内容,如果未能解决你的问题,请参考以下文章
tomcat 5.5 部署项目 404 错误 但是 tomcat 6.0 又是可以的!! ??? 急急急急急急急!!!!