我使用 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 有很大不同:
原文由 Nanor 发布,翻译遵循 CC BY-SA 4.0 许可协议
您面临两个问题,一个看起来很重要,一个很次要:
这两个问题的解决方案取决于您构建工件的方式。首先,删除所有
extracted *.jar
然后从可用元素 pan 添加所有 jar,如图所示。很明显,仅添加打包(压缩)的罐子会减小大小。但它也解决了签名问题。有关更多说明,请查看 本文。我只会引用一行。
似乎某些依赖项已签名,重新打包会弄乱您项目的 META-INF。