Java 如何解决在Tomcat 5.5中部署web应用时listenerStart错误?

Java 如何解决在Tomcat 5.5中部署web应用时listenerStart错误?,java,spring,deployment,tomcat,wicket,Java,Spring,Deployment,Tomcat,Wicket,我已经在Tomcat5.5实例中部署了一个使用Spring和Hibernate的ApacheWicket web应用程序。当我导航到Tomcat Manager界面时,我看到我部署的web应用程序没有运行。当我按下“开始”时,我收到以下错误消息;“失败-无法启动上下文路径/意大利面处的应用程序” My catalina.log包含以下内容: Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJ

我已经在Tomcat5.5实例中部署了一个使用Spring和Hibernate的ApacheWicket web应用程序。当我导航到Tomcat Manager界面时,我看到我部署的web应用程序没有运行。当我按下“开始”时,我收到以下错误消息;“失败-无法启动上下文路径/意大利面处的应用程序”

My 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:

<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> org.springframework.web.context.ContextLoaderListener 非常感谢您的帮助

/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
中有任何特定于服务器的库。将它们保留在appserver自己的库中。这只会导致类路径中的冲突。清除
/WEB-INF/lib
中所有特定于appserver的库(以及
JRE/lib
JRE/lib/ext
中的库,如果您已将它们放在其中)


webapp库中包含appserver特定库的一个常见原因是,初学者认为这是修复编译错误的正确方法,其中包括不可解析的
javax.servlet
类。将它们放在webapp的库中是错误的解决方案。在编译过程中,您应该在类路径中引用它们,即
javac-cp/path/to/server/lib/servlet.jar
等等,或者如果您使用的是IDE,那么您应该将服务器集成到IDE中,并将web项目与服务器相关联。然后IDE将自动在webapp项目的类路径(buildpath)中获取特定于服务器的库。

我发现遵循这些说明有助于找到问题所在。对我来说,那是杀手,不知道什么东西坏了

引用链接

在Tomcat6或更高版本中,默认的记录器是“java.util.logging”记录器,而不是Log4J。因此,如果您试图添加一个“log4j.properties”文件,这将不起作用。Java utils记录器查找名为“logging.properties”的文件,如下所述:

因此,要获得调试详细信息,请在WAR的“/WEB-INF/classes”文件夹下创建一个“logging.properties”文件,一切就绪

现在当你重新启动你的Tomcat时,你会看到你所有的调试都在它的荣耀中

示例logging.properties文件:


当我编译应用程序的JDK与tomcat JVM不同时,我遇到了这个错误。我验证了Tomcat管理器运行的是JVM1.6.0,但应用程序是在Java1.7.0下编译的


升级Java并在我们的启动脚本(/etc/init.d/tomcat)中更改Java_HOME之后,错误消失了。

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)。根据链接,这个侦听器不能添加到未扩展的WAR中


如果有人知道这是在OpenShift JBoss gear上发生的,可能会有所帮助。

感谢BalusC的帮助。我没有将servlet api或jsp api显式地添加到pom.xml中的依赖项列表中,实际上它们没有在那里列出。也许这是我的一种依赖。我会试试你的建议。我也遇到过类似的问题,在Eclipse中的WTP中,
/workspace/.metadata/.plugins/org.Eclipse.wst.server.core/tmp0/wtpwebapps/…
它是在从Servlet 2.5升级到3.0后启动的,所以我想右键单击服务器,然后“Clean Tomcat Work Directory”应该会删除它。但事情还是不断地发生。最后,
mvn dependency:tree
显示一些依赖项同时包括
javax.servlet:servlet api:jar:2.5
org.mortbay.jetty:servlet api:jar:2.5-20081211
。谢谢!正如您所说,我们可以神奇地检查问题的真正原因,停止浪费时间。:-)干杯。这只是(/我的)问题的一部分。listenerStart错误发生在
catalina.out
中,而stacktrace被写入
localhost-.out
。因此,一定要检查tomcat的所有日志文件是否有堆栈跟踪(可能通过使用
ps aux | grep tomcat
查找pid,并使用
lsof-p
查找tomcat的打开文件)看看这个:这正是我的问题,感谢这个解决方案
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler