Я вижу проблему при попытке запустить Java-сервлет в Eclipse (Ganymede), я использую Java 1.6 и Apache Tomcat 6.0.
Вот что я делаю:
- Стоп Tomcat.
- Новый динамический веб-проект.
- Позвоните в проект TestProject
- Использовать параметры по умолчанию: Context = "TestProject", Context Directory = "WebContent", Java Source Directory = "src"
- Щелкните правой кнопкой мыши по проекту и выберите новый сервлет
- Использовать пакет по умолчанию и вызывать класс «HelloTest», все остальные параметры являются дефолтными
- Изменить сопоставление 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 работает и обслуживает страницы, и что у меня правильный путь.