【问题标题】:NoClassDefFoundError with simple Apache HttpClient Eclipse projectNoClassDefFoundError 与简单的 Apache HttpClient Eclipse 项目
【发布时间】:2012-03-25 11:20:08
【问题描述】:

我正在尝试创建一个简单的 Eclipse 项目来测试我使用 HttpClient 代码的代码。

我在 Eclipse 中创建了一个纯 Java 项目,添加了一个 Junit4 测试用例(代码如下。)我将 httpclient-4.1.3.jar 添加到我从 Maven Central here 手动下载的 Eclipse 项目中,并将 jar 添加到 Java 构建路径。

测试运行时出现以下错误:

java.lang.NoClassDefFoundError: org/apache/http/params/HttpParams at HttpClientDemo.test(HttpClientDemo.java:13)

HttpClientDemo 很简单:

import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.junit.Test;


public class HttpClientDemo {
   @Test public void test() {
      HttpClient httpclient = new DefaultHttpClient();
   }
}

为什么会出现这个错误?

【问题讨论】:

    标签: java eclipse httpclient apache-commons noclassdeffounderror


    【解决方案1】:

    从版本 4 开始,HttpClient 被拆分为三个部分,在 HttpComponents 名称下:Core、正确的 Client 和 AsyncClient。 HttpParams 类现在是 HttpComponents Core 的一部分,因此您还需要该组件的特定 JAR(假设名为 httpcore-4.1.3.jar)才能成功编译您的简单示例。

    【讨论】:

    • 谢谢!但是,我在HttpComponents core "part" 下没有看到 JAR,只有一个 pom 文件。我没有使用 maven(我尝试安装 m2Eclipse 以获得仅针对该项目的 Maven 支持,但是学习曲线非常陡峭。)那么您知道我可能缺少哪个 HttpComponents JAR 吗?
    • @glenviewjeff 我不使用 Maven,但从 hc.apache.org/downloads.cgi 的页面我看到一些您可能感兴趣的 HttpCore 二进制下载。
    • 呃,最终所有的罐子都在来自Apache's HttpComponents site 的压缩“二进制”下载中。啊,我猜你打败了我。为了不费心看拉链内部而浪费了很多精力。我不知道我在想什么让我误入歧途。
    • @glenviewjeff 好吧,二进制如:字节码,已编译 - 与原始 Java 源代码相反。另外,我查看了您链接到的 pom.xml 文件,似乎 Maven 直接从 Apache 的 SVN 存储库下载了 HttpComponents Core 的源代码。从供应商网站下载全面的二进制文件让我感觉更舒服。
    • 对于未来的读者——我还必须将commons-logging-1.1.1.jar 添加到项目中以解决后续错误。
    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多