【问题标题】:jar ignores my manifestjar 忽略了我的清单
【发布时间】:2013-12-08 00:47:29
【问题描述】:

Jar 忽略了我的清单文件并将其替换为自动生成的清单。

我的清单是:

Manifest-Version: 1.0 
Created-By: Student Name 
Main-Class: ua.sumdu.j2se.studentName.tasks.PrintMonth

(空行)

命令:

jar -cvf build/tasks.jar MANIFEST.MF build\classes\ua\sumdu\j2se\studentName\tasks\*.class

结果如果我用winrar打开jar文件,会出现:

build
META-INF
MANIFEST.MF - my manifest

如果我将清单放入 META-INF 并执行

jar -cvf build/tasks.jar META-INF/MANIFEST.MF build\classes\ua\sumdu\j2se\studentName\tasks\*.class

在我的 META-INF 文件夹中将有 2 个清单。

发生了什么事?

【问题讨论】:

    标签: java jar manifest manifest.mf


    【解决方案1】:

    第 1 步。

    编译Main.java

    javac Main.java
    

    第 2 步。

    创建MANIFEST.MF

    Manifest-Version: 1.0
    Main-Class: Main
    

    第 3 步。

    创建app.jar

    jar cmvf MANIFEST.MF app.jar Main.class
    

    第 4 步。

    运行app.jar

    java -jar app.jar
    

    【讨论】:

      【解决方案2】:

      还要检查清单的最后一行是否以换行符或回车符结尾。我的清单末尾没有新行,这使它看起来被省略了。

      我看到你有(空行)。但是我没有得到这个答案。

      【讨论】:

        【解决方案3】:

        还有一点:jar 选项的顺序很重要。如果你把m放在第一位,f放在第二位,那么jar参数需要按照相同的顺序排列:manifest-file jar-file,反之亦然。

        我首先错过的 jar 帮助中的那一行:

        The manifest file name, the archive file name and the entry point name are
        specified in the same order as the 'm', 'f' and 'e' flags.
        

        【讨论】:

          【解决方案4】:

          试试这个jar -cmvf MANIFEST.MF build/tasks.jar build\classes\ua\sumdu\j2se\studentName\tasks\*.class

          【讨论】:

            【解决方案5】:

            使用M 选项禁用默认META-INF/MANIFEST.MF,或使用m 选项明确指定您自己的(documentation)。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-05-11
              • 2015-11-20
              • 2018-06-26
              • 1970-01-01
              • 2011-12-22
              • 2017-12-09
              • 2018-09-08
              • 1970-01-01
              相关资源
              最近更新 更多