是否有可能让IntelliJ IDEA生成像Eclipse那样的可执行JAR清单?

时间:2017-05-31 11:20:10

标签: java eclipse intellij-idea jar

我必须对旧的基于Java的项目进行一些修改,该项目在项目树中包含依赖的JAR文件。 3年前,当我上次参与这个项目的时候,我在Eclipse中开发它并使用Eclipse的File -> Export...函数生成可运行的JAR文件,该函数运行良好。

当我再次开始研究这个项目时,我转而使用IDEA。在线文档之后,我能够使用IDEA的Project Structure -> Artifacts窗格创建一个可运行的jar。

但是,在尝试使用JAR文件时遇到了几个问题IDEA生成我在使用Eclipse生成的文件时没遇到过:

  • 如果我尝试将依赖JAR直接提取到我的可运行JAR中,我会得到Java security exceptions about invalid signature files,因为我的依赖JAR中的RSA / SF清单文件被提取出来。

  • 如果我尝试在我生成的JAR文件中嵌入依赖JAR而不是从它们中提取类文件,我遇到了“class not found”异常。

为了理解发生了什么,我尝试使用Eclipse生成JAR文件,就像我之前做的那样,效果很好。差异似乎是IDEA正在打包存储在我的项目树中的清单文件中,如下所示:

Manifest-Version: 1.0
Class-Path: .
Main-Class: com.<company>.main.Main

相比之下,Eclipse在导出过程中生成了清单文件,如下所示:

Manifest-Version: 1.0
Class-Path: .
Main-Class: com.<company>.main.Main

Name: com/jgoodies/forms/layout/FormLayout$LayoutInfo.class
SHA1-Digest: J6yu1IuQZO0rgeF7Enl4p7u4ykU=

Name: com/jgoodies/forms/builder/ButtonBarBuilder.class
SHA1-Digest: 7ApcSFXKq2rw8IRkIl+R7y2rzIA=

Name: com/jgoodies/forms/layout/FormLayout$ComponentSizeCache.class
SHA1-Digest: cUMTPR0lwBEeQVUd3tsCFq6cMhA=

Name: com/jgoodies/forms/util/Utilities.class
SHA1-Digest: UbvvkJcHLyNbduyo07Hr2bSz06E=

...

它还从签名的从属JAR中排除了RSA / SF文件,这样在运行生成的JAR时我没有得到任何安全异常。

我的问题是:是否有可能让IDEA生成一个类似于Eclipse的清单文件?

0 个答案:

没有答案