【发布时间】:2011-08-15 12:27:24
【问题描述】:
我是 servlet 应用程序的新手,正在努力学习该主题。在途中,我编写了一个名为 FormWebServlet 的 servlet 类,它使用 org.apache.http.impl.client.DefaultHttpClient 类。但是,我得到了例外
java.lang.ClassNotFoundException: org.apache.http.impl.client.DefaultHttpClient
...这清楚地表明这个类不存在,虽然我已经将jar文件添加到项目中。
服务器返回“HTTP 状态 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 for Web Developers,20100917-0705”的项目资源管理器中继续项目,选择“属性”,选择“Java Build路径”并单击 [Add External JARs...] 按钮。)添加的 jar 文件来自 Apache 站点,名为 httpclient-4.1.1.jar。 2) 由于我仍然遇到同样的错误,我用 7-ZIP 解压 DefaultHttpClient.class 文件并将其放入 WebContent/WEB-INF/lib 目录。
问题 我究竟做错了什么?其他两个 JAR 文件都不包含该类,WEB-INF/lib 文件夹中也没有同名的类。
详情 包含的 JAR:
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
}
}
}
【问题讨论】:
-
你想在你的servlet中使用什么HttpClient?
标签: java eclipse apache servlets