我会尽量清楚简明。
我有一个完美的项目的jar文件。现在我需要对应用程序进行一些更改,以便使用此命令提取该jar。
jar xf jwire.jar
提取的文件是
我还在somebodys建议中添加了两个空文件夹src和bin。 现在我正在尝试使用所有这些文件夹再次创建jar文件。 没有进行任何类型的更改,我正在尝试使用以下
重建此jar jar cf newjar.jar G:\Project1\project
注意: - 我猜这是构建文件的正确方法。请指出它是否正确。
G:\ Project1 \ project是上述文件和文件夹的路径。 使用它创建的jar大小为729kb,而前一个使用711Kb,当我使用以下命令运行它时。
java -jar newjwire.jar
我收到以下消息
no main manifest attribute, in newjwire.jar
接下来,我尝试提取此newjwire.jar文件以查看其清单文件。我得到了包含MANIFEST.MF文件的META-INF文件夹。它没有主类的路径,所以我编辑它并使用以下命令重新打开修改后的文件
jar uf newjwire.jar META-INF/MANIFEST.MF
当我运行这个jar时,我收到以下消息
Error: Ivalid or corrupt jarfile newjwire.jar
我做错了什么?我是否以正确的方式构建jar文件?我也使用了eclipse juno并且它给了相同的消息,因为缺少了mainclass。主要功能包括一个主要类。这是否与我的orignal jar有两个MANIFEST文件有关。
我希望这个问题是可以理解的。我们将非常感谢明确而详细的答案。
答案 0 :(得分:1)
您应该按jar uf jar-file input-file(s)
请参阅此链接:http://docs.oracle.com/javase/tutorial/deployment/jar/update.html
答案 1 :(得分:0)
根据this page,您需要在创建或更新JAR时使用Manifest.txt
,或使用e
选项指定主类。可能后者在你的情况下会更有意义。
jar cfe newjar.jar mypackage.MainClass G:\Project1\project