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

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

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

Exception in thread "main" java.lang.NoClassDefFoundError:

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

这里有2个选项:

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

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

工件产生于out\singleout\linked目录。

相关配置:

单

关联

如果您使用maven来构建应用程序,那么这不是添加外部库的正确方法。 你也应该

  1. 安装你的库如下mvn install:install-file -Dfile=myJar.jar -DgroupId=com.yourproject -DartifactId=yourproject -Dversion={version} -Dpackaging=jar
  2. 使用如此处所述的系统路径。

选项1是首选,因为您不必在项目中保留jar。