Проблема с классом Apache DefaultHttpClient - PullRequest
1 голос
/ 29 апреля 2011

Я новичок в приложениях сервлетов, пытаюсь изучить предмет. По пути я написал класс сервлета под названием 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
        }
    }
}

1 Ответ

3 голосов
/ 29 апреля 2011

Просто поместите сами файлы JAR в WEB-INF / lib, а не в файл класса.Таким образом, они будут включены в ваше развертывание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...