如何解决在Tomcat 5.5中部署Web应用程序时启动的错误侦听器?

2022-09-01 03:28:43

我已经部署了一个Apache Wicket Web应用程序,该应用程序使用Spring和Hibernate到我的Tomcat 5.5实例。当我导航到Tomcat管理器界面时,我看到我部署的Web应用程序未运行。当我按“开始”时,我收到以下错误消息;“失败 - 无法启动上下文路径/意大利面条上的应用程序”。

我的卡塔利娜.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

摘自网络.xml:

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

任何帮助都非常感谢。


答案 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时,您将看到所有调试都处于全盛状态!!!

示例日志记录.属性文件:

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

答案 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/libJRE/libJRE/lib/ext

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


推荐