У меня возникла проблема при попытке запустить 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 работает и обслуживает страницы, и что у меня есть правильный путь.