1

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

2 回答 2

1

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

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

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

java.lang.NoClassDefFoundError

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

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

现在松散地说

Build  = compilation + packaging

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

希望能帮助到你!

于 2013-08-15T08:02:11.060 回答
0

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

于 2013-08-15T07:43:36.073 回答