【问题标题】:After extracting files from a jar, how to recombine them into a valid jar again?从 jar 中提取文件后,如何将它们重新组合成一个有效的 jar?
【发布时间】:2012-07-20 07:53:52
【问题描述】:

我从 dacapo 基准 jar 中提取了文件。

jar -xf dacapo-2006-10-MR2.jar

然后,我得到了这个文件夹

dacapo-2006-10-MR2

我试图以这种方式将它们重新组合在一起:

jar cmf dacapo-2006-10-MR2/META-INF/MANIFEST.MF my-dacapo.jar dacapo-2006-10-MR2

但是当我尝试使用新的 jar 时出现错误:

java -jar my-dacapo.jar -s small antlr

Exception in thread "main" java.lang.NoClassDefFoundError: Harness
Caused by: java.lang.ClassNotFoundException: Harness
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Harness. Program will exit.

我不熟悉 jar 文件。谁能帮我一个忙?谢谢!

@Bohemian 看来你的解决方案在这里不起作用,见下文

> zip -r my-dacapo dacapo-2006-10-MR2
> mv my-dacapo.zip my-dacapo.jar
> java -jar my-dacapo.jar -s small antlr

Invalid or corrupt jarfile my-dacapo.jar

还是谢谢。

【问题讨论】:

    标签: java jar manifest executable-jar manifest.mf


    【解决方案1】:

    jar 只是一个扩展名为“.jar”的压缩文件

    压缩文件并将.zip 重命名为.jar

    【讨论】:

      【解决方案2】:

      Jar 工具提供了一个 u 选项,您可以使用该选项通过修改其清单或添加文件来更新现有 JAR 文件的内容。

      添加文件的基本命令格式如下:

      jar uf jar-file 输入文件

      在这个命令中:

      • u 选项表示您要更新现有 JAR 文件。

      • f 选项表示指定要更新的 JAR 文件
        在命令行上。

      • jar-file 是要更新的现有 JAR 文件。

      • input-file(s) 是您要添加到 JAR 文件中的一个或多个文件的空格分隔列表。

      存档中已有的与添加的文件具有相同路径名的任何文件都将被覆盖。

      更多详情:https://docs.oracle.com/javase/tutorial/deployment/jar/update.html

      【讨论】:

        【解决方案3】:

        首先进入解压文件所在的目录,然后写入命令。

        jar cvf(你要插入的类).class(或你要插入的文件夹)

        它会生成可执行的jar文件

        【讨论】:

          【解决方案4】:

          如果你使用 eclipse,你可以通过stepscreate manifest 获取你的 jar

          另外你可能需要阅读this(你可能没有在清单文件中定义你的主类)

          【讨论】:

            猜你喜欢
            • 2010-10-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-19
            • 2020-11-01
            • 1970-01-01
            相关资源
            最近更新 更多