Как разрешить Ошибку listenerStart при развертывании веб-приложения в Tomcat 5.5?

Я развернул веб-приложение Калитки 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>

Любая справка значительно ценится.

35
задан Ahmed Ashour 20 June 2016 в 12:47
поделиться

1 ответ

/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.

33
ответ дан 27 November 2019 в 06:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: