Я новичок в приложениях сервлетов, пытаюсь изучить предмет. По пути я написал класс сервлета под названием FormWebServlet, который использует класс org.apache.http.impl.client.DefaultHttpClient. Тем не менее, я получаю исключение
java.lang.ClassNotFoundException: org.apache.http.impl.client.DefaultHttpClient
... это ясно показывает, что этот класс не существует, хотя я добавил файл jar в проект.
Сервер возвращает ошибку «HTTP Status 500» с сообщением, что «основной причиной» является этот отсутствующий класс:
java.lang.NoClassDefFoundError: org/apache/http/impl/client/DefaultHttpClient
testPackage.FormWebServlet.doGet(FormWebServlet.java:45)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Пытается
1) Я искал отсутствующий файл jar и добавил его в проект (зайдя в проект в "Eclipse JAVA EE IDE для веб-разработчиков, 20100917-0705" в проводнике проекта, выберите "Свойства", выберите "Java Build" Путь "и нажал кнопку [Добавить внешние JAR ...].) Добавленный файл JAR находится на сайте Apache и называется httpclient-4.1.1.jar.
2) Поскольку я все еще получаю ту же ошибку, я извлек 7-ZIP файл DefaultHttpClient.class и поместил его в каталог WebContent / WEB-INF / lib.
ВОПРОС
Что я делаю неправильно? Ни один из двух других файлов JAR не содержит этот класс, равно как и класс с таким именем отсутствует в папке WEB-INF / lib.
ПОДРОБНОСТИ
Встроенные банки:
common-httpclient-3.0.1.jar
httpclient-4.1.1.jar
httpcore-4.1.jar
FormWebServlet.jar:
/**
*
*/
package testPackage;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import coreServlets.ServletUtilities;
/**
*
*/
@WebServlet(description = "Gets the book's barcode with a form", urlPatterns = { "/FormWebServlet" })
public class FormWebServlet extends HttpServlet {
/** */
private static final long serialVersionUID = 6008315960327824633L;
/**
* @see HttpServlet#doGet(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doGet(final HttpServletRequest request,
final HttpServletResponse response)
throws IOException, ServletException {
final String BAR_CODE = request.getParameter("barCode");
response.setContentType("text/html");
final PrintWriter out = response.getWriter();
if (BAR_CODE != null) {
HttpClient client = new DefaultHttpClient();
final String ADDRESS = ServletUtilities.getHttpAddress(BAR_CODE);
out.println("ADDRESS = \"" + ADDRESS + '\"');
HttpGet get = new HttpGet(ADDRESS);
HttpResponse httpResponse = null;
// Removed commented code that will use these objects
}
}
}