2

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

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

4

1 回答 1

1

如果您的代码要使用Jsoup ,它应该在主机上。为什么不将它与您自己的 jar 文件一起放置,并设置您的 jar 的清单,以便它知道在哪里可以找到 Jsoup jar?这个问题与 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

可以在此处找到有关在清单文件中使用 Class-Path 属性的详细信息:将类添加到 JAR 文件的类路径

于 2013-08-14T01:30:28.333 回答