【问题标题】:java.lang.NoClassDefFoundError: org/apache/http/HttpEntityjava.lang.NoClassDefFoundError: org/apache/http/HttpEntity
【发布时间】:2013-08-15 07:40:31
【问题描述】:

尝试了一切,但解决方案,我添加到 buildpath,通过 manifest.mf 导入,但我不断收到此异常。 在构建路径中:commons-codec-1.8.jar、commons-logging-1.1.1.jar、httpclient-4.2.5.jar、httpcore-4.2.4.jar。我尝试使用 httpmime-4.0.1 和 selenium-server-standalone-2.0b3.jar,但我不断收到此异常。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/httpEntity
    at autorun.Main.main<Main.java:101>
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpEntity
    at java.net.URLClassLoader$1.run<Unknown Source>
    at java.net.URLClassLoader$1.run<Unknown Source>
    at java.security.AccesController.doPrivileged<Native Method>
    at java.net.URLClassLoader.findClass<Unknown Source>
    at java.lang.ClassLoader.loadClass<Unknown Source>
    at sun.misc.Launcher$AppClassLoader.loadClass<Unknown Source>
    at java.lang.ClassLoader.loadClass<Unknown Source>
    ... 1 more

【问题讨论】:

  • 构建路径 != 运行时类路径
  • @JigarJoshi 一般来说,是的,但是当您执行项目时,Eclipse 不会自动确保这些 JAR 位于运行时类路径中吗?
  • 我没有在整个页面中看到日食(除了你的评论,现在在我的这个评论中)
  • @JigarJoshi 我可能对 Eclipse 独有的 buildpath 标签的使用了解太多。

标签: java apache http exception buildpath


【解决方案1】:

了解这两个命令的区别:

  • javac -cp [dir/jar] [class].java
  • java -cp [dir/jar] [class]

两者都需要依赖类路径,但一个需要它来编译,另一个需要它在运行时。现在按照 Javadoc:

java.lang.NoClassDefFoundError

如果 Java 虚拟机或 ClassLoader 实例尝试 加载类的定义(作为正常方法调用的一部分或 作为使用 new 表达式创建新实例的一部分)并且没有 可以找到类的定义。

这基本上意味着:在编译/打包时一切正常(这就是为什么你有当前的 Java 字节码!),但在运行时找不到类(类定义)。 p>

现在松散地说

Build  = compilation + packaging

所以 buildpath can 在编译期间被认为是类路径。 NoClassDefFoundError 告诉我们问题发生在运行时。所以这意味着所需的类在编译/构建时存在于类路径中,但在运行时缺失

希望对你有帮助!

【讨论】:

  • 感谢您的帮助。我尝试将 commons-codec-1.8.jar、commons-logging-1.1.1.jar、httpclient-4.2.5.jar、httpcore-4.2.4.jar 添加到类路径,但不起作用。我应该在类路径中添加什么? (我使用 Eclipse,我使用了运行/运行配置/类路径。)
  • @Judit 尝试转储您的运行时类路径 System.out.println(System.getProperty("java.class.path")); 并查看包含类的 jar 是否可用
【解决方案2】:

您需要在运行程序时将所需的 jars(包含 httpEntity 和其他相关类)添加到您的classpath。构建路径用于编译/构建您的代码,但不用于执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2017-03-16
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多