Я развернул веб-приложение Калитки Apache, которое использует Spring, и Будьте в спящем режиме к моему экземпляру Tomcat 5.5. Когда я перешел к интерфейсу Tomcat Manager, я вижу, что веб-приложение, которое я развернул, не работает. Когда я нажимаю 'Start', я получаю следующее сообщение об ошибке; "СБОЙ - Приложение в / спагетти пути контекста не могло быть запущено".
Мой 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>
Любая справка значительно ценится.
/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
, если вы разместили любой из них есть).
Распространенной причиной включения специфичных для сервера приложений библиотек в библиотеку webapp является то, что начинающие думают, что это правильный способ исправить ошибки компиляции, среди которых классы javax.servlet
не разрешаются. Помещать их в библиотеку webapp - неправильное решение. Вы должны ссылаться на них в пути к классам во время компиляции, то есть javac -cp /path/to/server/lib/servlet.jar
и так далее, или, если вы используете IDE, вы должны интегрировать сервер в IDE и свяжите веб-проект с сервером. Затем среда IDE автоматически берет библиотеки, специфичные для сервера, в путь к классам ( путь сборки ) проекта webapp.