尝试了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
答案 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
。构建路径用于编译/构建代码,但不用于执行。