如何在Eclipse中创建可运行的JAR,就像在Eclipse中一样

时间:2017-01-19 15:53:44

标签: java eclipse intellij-idea

我从使用Eclipse的许多库的项目创建可运行JAR的过程一直是。

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

这会在我的导出目标中创建一个JAR,我将其FTP到我的服务器并运行正常。

我最近因为各种原因切换到IntelliJ,除了构建我的JAR之外,它在所有情况下都有所改进,这迫使我暂时回到日食。

使用IntelliJ I:

打开项目结构&gt;工件并从具有依赖项的模块创建新的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看起来像这样: Good jar

而无效.JAR看起来像这样: Bad jar

3 个答案:

答案 0 :(得分:11)

你面临两个问题,一个似乎很重要,一个是次要问题:

  • 专业:签名例外
  • 轻微:罐子的大小比eclipse生成的罐子大15 MB。

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

Dependencies screenshot

很明显,仅添加包装(压缩)罐子会减小尺寸。但它也解决了签署问题。有关详细说明,请查看此article。我只会引用一行。

  

最好保留官方jar,只需将其添加为   清单文件中的依赖......

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

答案 1 :(得分:2)

  

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

参考:Intellij - Nikolay Chashnikov

然后您可以使用java -jar filename.jar

正常执行runnable jar

答案 2 :(得分:0)

您可以尝试使用gradle脚本。 eclipse会让你成为一个gradle项目。你可以使用任何ide的构建文件。它有一个内置的jar任务。