我已经在Apache 5.5实例上部署了一个使用Spring和Hibernate的Apache Wicket Web应用程序。当我导航到Tomcat Manager界面时,我看到我部署的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 </ listener-class> </ listener>
任何帮助是极大的赞赏。
/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/lib,JRE/lib/ext如果已将它们放在其中)。
/WEB- INF/lib
JRE/lib
JRE/lib/ext
特定于appserver的库包含在webapp的库中的一个常见原因是,javax.servlet入门者认为这是修复无法解析的类等其他编译错误的正确方法。将它们放在webapp的库中是错误的解决方案。您应在编译期间(例如,javac -cp /path/to/server/lib/servlet.jar依此类推)在类路径中引用它们,或者如果您使用的是IDE,则应将服务器集成到IDE中并将Web项目与服务器关联。然后,IDE将自动在webapp项目的类路径( buildpath )中获取服务器特定的库。
javax.servlet
javac -cp /path/to/server/lib/servlet.jar