Проблема с запуском сервлета

У меня возникла проблема при попытке запустить Java-сервлет в eclipse (Ganymede), я использую Java 1.6 и Apache Tomcat 6.0.

Вот что я делаю:

  1. Остановите Tomcat.
  2. Новый динамический веб-проект.
  3. Назовите проект TestProject
  4. Используйте параметры по умолчанию: Context = "TestProject", Context Directory = "WebContent", Java Source Directory = "src"
  5. Щелкните правой кнопкой мыши проект и выберите новый сервлет.
  6. Используйте пакет по умолчанию и назовите класс "HelloTest", все остальные параметры - по умолчанию.
  7. Измените сопоставление URL-адресов на / hello

Код для сервлета следующий (я редактировал только методы doGet и doPost, все остальное создается):

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloTest
 */
public class HelloTest extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloTest() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter writer = response.getWriter();
        writer.write("Hello World");
        writer.flush();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

}

Вот как я пытаюсь запустить проект: 1. Сохраните проект 2. Щелкните проект правой кнопкой мыши и выберите «Запускать на сервере». 3. Выберите существующий сервер Tomcat 4. Нажмите Готово.

Когда я пытаюсь перейти к http://localhost:8080/TestProject/hello, я получаю сообщение об исключении что класс не найден.

javax.servlet.ServletException: Wrapper cannot find servlet class HelloTest or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)

основная причина

java.lang.ClassNotFoundException: HelloTest
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

Я делаю что-то неправильно?

Если я добавлю страницу .jsp с именем test.jsp, она отобразится идеально, поэтому я знаю, что Tomcat работает и обслуживает страницы, и что у меня есть правильный путь.


person Omar Kooheji    schedule 23.04.2009    source источник
comment
Вы пробовали поместить свой сервлет в пакет вместо пакета по умолчанию? Кроме того, как ваш сервлет отображается в файле web.xml?   -  person pgb    schedule 23.04.2009
comment
Poject не был настроен на автоматическую сборку. Меню ›Проект› Создавать автоматически.   -  person Omar Kooheji    schedule 23.04.2009


Ответы (1)


Сначала проверьте, правильно ли развернут класс. См. Также этот вопрос.

person Manrico Corazzi    schedule 23.04.2009