在jar中打包时找不到Java JSoup Library

时间:2013-08-14 01:25:48

标签: java jvm jsoup

我正在编写一个插件,当然会由另一个应用程序加载,我想使用JSoup进行一些网络拉动。但是,当我捆绑jar并运行应用程序时,我得到: NoClassDefFoundError:org / jsoup / Jsoup 我的类路径中有jsoup就像我所有的其他依赖项一样。但是,Jsoup不会在主机上。我还尝试将项目jar与jsoup捆绑在jar本身的lib文件夹中并从那里引用它,我仍然没有运气。如何在项目中的JVM上加载Jsoup? 编辑:我可以在eclipse中运行Jsoup,只是当它被捆绑在一个jar

Edit2:为什么我可以让一些依赖项工作而不在主机上加载谷歌的堵嘴项目?为什么我需要在主机上加载jsoup?我知道我对JVM的工作方式有误解:/

1 个答案:

答案 0 :(得分:1)

如果你的代码要使用它,那么

Jsoup 应该在主机上。为什么不把它放在你自己的jar文件中,并设置你的jar的清单,以便它知道在哪里找到Jsoup罐子?这个问题与Jsoup本身无关,而且与使用jar文件中包含的外部库有关,但实际上我在我的几个最终项目中使用Jsoup,并且它们在使用时效果很好,因为大多数jar文件应该是用作主机上包含的库。


修改 你说:

  

这就是我试图做的事情。我已经反编译了jar,Jsoup以jar格式捆绑在一起。但是,我以前从未搞过清单。如何设置清单以在项目jar中查找它?

如果Jsoup jar文件与jar文件在同一目录中,只需直接在manifest的class-path中引用它:

Manifest-Version: 1.0
Class-Path: jsoup-1.6.1.jar
Main-Class: mvc.main.SimpleImgScraperMain

可以在此处找到有关在清单文件中使用Class-Path属性的详细信息:Adding Classes to the JAR File's Classpath