java.lang.NoClassDefFoundError:org / apache / http / HttpEntity

时间:2013-08-15 07:40:31

标签: java apache http exception buildpath

尝试了Everytihng但解决方案,我添加到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

2 个答案:

答案 0 :(得分:1)

了解这两个命令之间的区别:

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

两者都需要classpath上的依赖项,但是需要它来进行编译,而另一个需要它在运行时。现在按照Javadoc:

java.lang.NoClassDefFoundError

  

如果Java虚拟机或ClassLoader实例尝试,则抛出该异常   加载类的定义(作为普通方法调用的一部分或   作为使用新表达式创建新实例的一部分)和否   可以找到班级的定义。

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

现在松散地说

Build  = compilation + packaging

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

希望它有所帮助!

答案 1 :(得分:0)

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