如何像在 Eclipse 中那样在 IntelliJ 中创建可运行的 JAR

新手上路,请多包涵

我使用 Eclipse 从一个包含许多库的项目创建可运行 JAR 的过程已经完成。

导出 > 可运行的 JAR > 选择启动配置 > 将所需的库打包到生成的 JAR > 完成

这会在我的导出目标中创建一个 JAR,我将其通过 FTP 传输到我的服务器并运行良好。

我最近出于各种原因转向了 IntelliJ,它在所有情况下都有所改进,除了构建我的 JAR 迫使我暂时回到 eclipse 之外。

使用 IntelliJ 我:

打开 Project Structure > Artifacts 并从具有依赖关系的模块创建一个新的 JAR。然后我的输出布局包含 JAR 的名称、其中的 META-INF 以及我所有格式为 Extracted <lib.jar/> 的库(抱歉,我无法在此 VPN 上上传屏幕截图。)

我构建了我的工件(大约大了 15MB)并将其通过 FTP 传输到我的服务器,尝试运行它但我收到错误:

 Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

我如何模仿我在 Eclipse 中的做法?

编辑

创建的两个 JAR 有很大不同:

Eclipse 创建的有效 jar 如下所示: 好罐子

而无效的 .JAR 看起来像这样: 坏罐子

原文由 Nanor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 501
2 个回答

您面临两个问题,一个看起来很重要,一个很次要:

  • 重大:签名异常
  • 次要:jar 的大小比 eclipse 生成的 jar 大 15 MB。

这两个问题的解决方案取决于您构建工件的方式。首先,删除所有 extracted *.jar 然后从可用元素 pan 添加所有 jar,如图所示。

依赖截图

很明显,仅添加打包(压缩)的罐子会减小大小。但它也解决了签名问题。有关更多说明,请查看 本文。我只会引用一行。

最好保持官方 jar 原样,并将其作为依赖项添加到清单文件中……

似乎某些依赖项已签名,重新打包会弄乱您项目的 META-INF。

原文由 user2241537 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您使用的是 Maven,则需要将 META-INF 目录放在 /main/resources 文件夹下,而不是 main/java

参考资料: Intellij - Nikolay Chashnikov

然后你可以正常执行 runnable jar java -jar filename.jar

原文由 another 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题