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

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

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

Edit2:为什么我可以让一些依赖项工作,而不用将其加载到主机上,比如谷歌的gag项目?为什么我需要在主机上加载jsoup?我知道我对JVM的工作原理有一个误解:/

如果您的代码要使用它,那么Jsoup应该在主机上。为什么不把它放在您自己的jar文件中,并设置jar的清单,以便它知道在哪里可以找到JSoupJAR呢?这个问题与Jsoup本身无关,完全与使用jar文件中包含的外部库有关,但碰巧我在我的几个最终项目中使用了Jsoup,当使用大多数jar文件时,它们工作得非常好,就像主机上包含的库一样


编辑 你说:


这就是我想做的。我已经反编译了jar,Jsoup以jar格式捆绑在其中。然而,我以前从未弄乱过舱单。如何设置清单以在项目jar中查找它

如果Jsoup jar文件与jar文件位于同一目录中,只需在清单的类路径中直接引用它:

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

在清单文件中使用类路径属性的详细信息可以在这里找到:

这就是我试图做的。我已经反编译了jar,Jsoup以jar格式捆绑在其中。然而,我以前从未弄乱过舱单。我如何设置清单以在项目jar中查找它?我不想强迫插件用户获取Jsoup,这样编码对我来说就更容易了。我希望我可以使用Jsoup的功能,而不必将它放在主机上,而是放在我的项目jar中。这可能吗?很抱歉,我不了解JVM如何加载源代码。@Weasel:为什么不呢?他们必须获得你的程序的副本,所以最好将它们捆绑在一起。我不认为这对Jsoup有多大关系,但有些库会要求它们的jar文件保持不变并按原样使用。