Tomcat не может загрузить Struts 2 (исключение запуска фильтра Struts2) - PullRequest
1 голос
/ 03 февраля 2011

Я использую Eclipse (Java EE / Helios) IDE, struts2 и Tomcat 7.0.6. Вчера мое веб-приложение работало нормально, но некоторые неизвестные изменения убили его, и сервер запускается, но больше не работает правильно. При попытке просмотра файла .jsp меня приветствует сообщение:

описание Запрашиваемый ресурс () недоступен.

(если он вообще решит исправить эту ошибку)

Просмотр консоли дает мне эту ошибку, когда я пытаюсь запустить сервер Tomcat через Eclipse и загрузить страницу Add.jsp:

...
INFO: Starting service Catalina
Feb 2, 2011 1:38:08 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.6
Feb 2, 2011 1:38:08 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter struts2
java.lang.NoClassDefFoundError: javax/servlet/Filter
    at java.lang.ClassLoader.findBootstrapClass(Native Method)
    at java.lang.ClassLoader.findBootstrapClassOrNull(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1488)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:252)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4382)
    at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5040)
    at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5035)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Feb 2, 2011 1:38:08 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Feb 2, 2011 1:38:08 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/StrutsTest] startup failed due to previous errors
Feb 2, 2011 1:38:09 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter struts2
java.lang.NoClassDefFoundError: javax/servlet/Filter
    at java.lang.ClassLoader.findBootstrapClass(Native Method)
    at java.lang.ClassLoader.findBootstrapClassOrNull(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
...

Теперь это похоже на проблему со всеми приложениями struts2, которые я сделал ранее. Перезапуск Eclipse и / или моего компьютера, похоже, не помогает.

Вот копия моего Web.xml (который очень похож на каждом проекте):

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_9" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Development Environments</display-name>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>Add.jsp</welcome-file>
    </welcome-file-list>

</web-app>

Я пытался обновить некоторые .jars в моем classpath до последней версии (хотя я не ожидал, что это сработает). Кто-нибудь знает, что может быть не так? Я с радостью предоставлю больше информации, если вы знаете, что еще нужно.

Ответы [ 5 ]

1 голос
/ 16 марта 2012

Я видел подобные вещи несколько раз с Tomcat / Eclipse, где базовые классы внезапно исчезают. Я думаю, что Eclipse / Tomcat иногда запутываются. Похоже, это происходит чаще, если я оставил сервер включенным с автоматическим развертыванием, и я внес много небольших изменений.

Когда это происходит, я выключаю сервер. Я запускаю «clean» в моем проекте, а затем очищаю на сервере tomcat и очищаю рабочий каталог сервера. Когда я перезагружаю сервер, все снова начинает работать.

1 голос
/ 25 июля 2011

Мне пришлось добавить путь к servlet-api в папке apache lib.Странно, но после этого это сработало

0 голосов
/ 17 сентября 2012

Убедитесь, что у вас есть все jar-файлы, включая commons-lang3-xx

. Вы можете найти отсутствующий jar-файл, просмотрев журналы apache, например:

. Причина: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1711) в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappjavaLoader.15)) ... еще 55

0 голосов
/ 16 марта 2012

Как минимум для запуска приложения Struts2 типа helloworld потребуются эти банки.

  • struts2-ядро - * баночка
  • xwork-ядро - * баночка
  • OGNL -. * Баночка
  • Обще-каротаж - * баночка
  • Обще-ю * .jar
  • Обще-языки * .jar
  • Обще-FileUpload * .jar
  • FreeMarker -. * Баночка
  • javaassist -. * Баночка
0 голосов
/ 03 февраля 2011

Сначала попробуйте проверить журнал сервера Tomcat, чтобы убедиться, что Tomcat не сталкивается с какой-либо неустранимой ошибкой при запуске.

Исключение указывает на то, что JAR API сервлета не может быть найден, однако у вас, по-видимому, естьJAR в правильном месте.

Запускаете ли вы приложение из Eclipse?Если это так, возможно, Eclipse не запускает Tomcat должным образом.Что произойдет, если вы попытаетесь запустить Tomcat вручную и развернуть приложение без Eclipse?

Обновление

Поскольку поведение было одинаковым, независимо от того, запустил ли Eclipse Tomcat или вы запустили его вручную,мы можем исключить Eclipse как часть проблемы.

Я бы попробовал следующее:

  • Попробуйте развернуть простой проект сервлета или даже JSP - может быть полезно знать, если что-нибудь работает
  • Переустановите Tomcat - вы упоминали, что это произошло недавно, что-то могло случиться с установкой Tomcat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...