在Tomcat 5.5中部署web-app时如何解决Error listenerStart?

Joh*_*ohn 35 java deployment spring tomcat wicket

我已经部署了一个Apache Wicket Web应用程序,它将Spring和Hibernate用于我的Tomcat 5.5实例.当我导航到Tomcat Manager界面时,我发现我部署的Web应用程序没有运行.当我按下"开始"时,我收到以下错误消息; "失败 - 在上下文路径/意大利面条中的应用程序无法启动".

我的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
Run Code Online (Sandbox Code Playgroud)

摘自web.xml:

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

任何帮助是极大的赞赏.

Tom*_*eba 68

我发现遵循这些说明有助于找到问题所在.对我来说,那是杀手,不知道什么被打破了.

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
Run Code Online (Sandbox Code Playgroud)

  • 这只是(/ my)问题的一部分.当stacktrace被写入`localhost- <date> .out`时,在`catalina.out`中发生listenerStart-error.所以一定要检查所有tomcat的日志文件是否有堆栈跟踪(可能是通过使用`ps aux | grep tomcat`查找pid并使用`lsof -p <pid>`查找tomcat的打开文件) (3认同)

Bal*_*usC 33

/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
Run Code Online (Sandbox Code Playgroud)

你应该不会有任何的特定服务器的库/WEB-INF/lib.将它们留在appserver自己的库中.它只会导致类路径中的冲突.摆脱所有特定应用程序服务器-库/WEB-INF/lib(也包括JRE/libJRE/lib/ext,如果你已经把其中的任何那里).

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


Col*_*n D 10

当我编译app的JDK与tomcat JVM不同时,我遇到了这个错误.我验证了Tomcat管理器运行的是jvm 1.6.0,但该应用程序是在java 1.7.0下编译的.

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