我正在编写一个插件,当然会由另一个应用程序加载,我想使用JSoup进行一些网络拉动。但是,当我捆绑jar并运行应用程序时,我得到: NoClassDefFoundError:org / jsoup / Jsoup 我的类路径中有jsoup就像我所有的其他依赖项一样。但是,Jsoup不会在主机上。我还尝试将项目jar与jsoup捆绑在jar本身的lib文件夹中并从那里引用它,我仍然没有运气。如何在项目中的JVM上加载Jsoup? 编辑:我可以在eclipse中运行Jsoup,只是当它被捆绑在一个jar
时Edit2:为什么我可以让一些依赖项工作而不在主机上加载谷歌的堵嘴项目?为什么我需要在主机上加载jsoup?我知道我对JVM的工作方式有误解:/
答案 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