为什么会发生以下情况?如何解决?
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/Validate
at org.jsoup.DataUtil.load(DataUtil.java:47)
at org.jsoup.Jsoup.parse(Jsoup.java:57)
at linksfind.main(linksfind.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.Validate
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.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)
... 3 more
答案 0 :(得分:9)
这意味着运行时类路径中缺少类org.apache.commons.lang.Validate
。您只需将包含该类的JAR文件添加到运行时类路径中。这是Apache Commons Lang JAR file。在当前的Jsoup下载页面中也明确提到了这一点。
假设您使用普通香草java.exe
启动它,就像在previous question中一样,那么就这样做:
java -cp .;/path/to/jsoup.jar;/path/to/commons-lang.jar com.example.YourClass
请注意,Jsoup作者在下一个Jsoup版本中删除了Commons Lang依赖项mentioned。
jsoup的下一个版本不需要Apache Commons-Lang或任何其他外部依赖项,这会将jar大小降低到大约115K。
Jsoup 1.3.1是第一个不再需要Apache Commons Lang的版本。
答案 1 :(得分:3)
您需要下载Apache Commons/Lang并确保它包含在CLASSPATH
中(或者如果使用IDE,请确保构建配置中包含所有必需的库)。
答案 2 :(得分:2)
看起来您需要在类路径中使用jar文件。 从谷歌可能是commons-lang-2.4.jar或类似的
答案 3 :(得分:1)