我从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
非常感谢。
答案 0 :(得分:2)
jar只是一个压缩文件,扩展名为“.jar”
压缩文件并将.zip
重命名为.jar
答案 1 :(得分:0)
首先转到解压缩该文件的目录。然后写入命令。
jar cvf(你要插入的类).class(或你要插入的文件夹)
它将生成可执行jar文件
答案 2 :(得分:0)
如果您使用eclipse,可以按照这些steps和create manifest
来获取您的jar此外,您可能需要阅读this(您可能没有在清单文件中定义主类)
答案 3 :(得分:0)
Jar工具提供了一个 u 选项,您可以通过修改其清单或添加文件来更新现有JAR文件的内容。
添加文件的基本命令具有以下格式:
jar uf jar-file input-file
在此命令中:
u 选项表示您要更新现有JAR 文件
f 选项表示要指定要更新的JAR文件 在命令行上。
jar-file 是要更新的现有JAR文件。
输入文件是您要添加到JAR文件的一个或多个文件的空格分隔列表。
存档中已存在的文件与添加的文件具有相同的路径名将被覆盖。
更多细节:https://docs.oracle.com/javase/tutorial/deployment/jar/update.html