java Jar文件在提取和重建时不起作用
关于这一点,我会尽量说得清楚简洁
我有一个jar文件的一个项目,这是完美的工作。现在我需要对应用程序做一些更改,所以我使用这个命令提取了这个jar
jar xf jwire.jar
提取的文件是
- META-INF(包含清单文件)
- 资源(包含应用程序中使用的图片)
- Jwire(包含类和java文件)
- 。类路径
- 。计划
- 舱单。mf(另一个清单文件,具有指向主类的其他路径)
根据某人的建议,我还在这里添加了两个空文件夹src和bin。 现在,我尝试使用所有这些文件夹再次创建jar文件。 在不进行任何类型的更改的情况下,我尝试使用以下方法重建这个jar
jar cf newjar.jar G:\Project1\project
注意:-我猜这是构建文件的正确方法。如果不对,请指出强>
G:\Project1\project是指向上述文件和文件夹的路径。 使用此命令创建的jar大小为729kb,而早期的jar大小为711Kb,当我使用以下命令运行它时
java -jar newjwire.jar
我得到以下信息
no main manifest attribute, in newjwire.jar
接下来我试着提取这个新的jwire。以查看其清单文件。我得到了这个包含清单的META-INF文件夹。MF文件。它没有主类的路径,所以我编辑了它,并使用下面的命令将修改后的文件重新打开
jar uf newjwire.jar META-INF/MANIFEST.MF
当我运行这个jar时,我得到以下消息
Error: Ivalid or corrupt jarfile newjwire.jar
我做错了什么?我是否以正确的方式构建jar文件?我也使用了EclipseJuno,它向mainclass提供了相同的消息。有一个主类组成主函数。这与我的原始jar有两个清单文件有关吗
我希望这个问题是可以理解的。请给出清晰详细的答案
# 1 楼答案
你应该在
jar uf jar-file input-file(s)
之前更新JAR文件请参阅以下链接:http://docs.oracle.com/javase/tutorial/deployment/jar/update.html
# 2 楼答案
根据this page,在创建或更新JAR时需要有
Manifest.txt
存在,或者使用e
选项指定主类。在你的情况下,后者可能更有意义