java - 从 jar 中提取文件后,如何将它们重新组合成一个有效的 jar?

标签 java jar manifest executable-jar manifest.mf

我从 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

还是谢谢你

最佳答案

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

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

关于java - 从 jar 中提取文件后,如何将它们重新组合成一个有效的 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11589495/

相关文章:

java - EclipseLink 错误 : Entity class has no primary key specified. 它应该定义 @Id、@EmbeddedId 或 @IdClass

适用于 Mac 的 Java 应用程序

Java - 在 JAR 文件中写入 txt

java - 我的文件无法在 cmd 中打开

Java 8 流如何过滤在另一个 arrayList 中找不到的列表的内容?

java - 并发应用中的 PreparedStatement 批量更新

java - Uberjar 通过 eclipse ?

c# - 使MAF AddInProcess.exe "Long Path Aware"

android - 关于 Manifest 中的 <uses-sdk> 的警告?

java - jar 忽略了我的 list