在IntelliJ IDEA中将外部库添加到工件jar

Shi*_*ato 9 java dependencies build intellij-idea maven

如何在IntelliJ IDEA中向项目添加外部库,以便在构建工件时它仍然可以访问库中的类?

我从Project Structure创建了一个新的Jar工件,然后将外部JAR添加到Libraries,然后在Modules List中检查它,最后将它添加到Artifact的Output中.这些都不起作用.当我构建并尝试运行我的应用程序时,它会抛出一个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: <path of the class trying to use>

我错过了什么,或者我完全错了?

Cra*_*der 16

这里有2个选项:

  • 将依赖项提取到工件jar中,以便app是具有所有依赖项的单个可执行jar
  • 通过它链接依赖的罐子Manifest.MF并将它们复制到应用程序主罐子附近

我准备了一个演示两种方法的示例项目:HelloWithDependencies.zip.

所述伪影制作成out\singleout\linked目录.

相关配置:

单

关联

  • 你刚刚帮我解决了一个问题,我花了 25 多个小时,也许 2 周,试图破译。非常感谢!此外,这行得通,但它背后的支柱是什么?IntelliJ 使用 Maven 或 Ant 或类似的东西吗? (2认同)
  • 是的,您可以使用基于Maven的项目,但这与您遇到的情况无关。当您将新依赖项添加到项目中时,它们不会自动添加到您已有的工件中,您需要再次查看工件配置,并添加从jar运行应用程序所需的所有缺少的库。另一个常见的错误是将一个罐子放入另一个罐子中将不起作用,该罐子必须在主罐子中解开包装或在其附近复制并通过清单链接(不要忘记在其中添加任何新罐子到清单中)案件)。 (2认同)