提取和重建时,Jar文件无法正常工作

时间:2014-03-09 08:37:21

标签: java eclipse jar project manifest

我会尽量清楚简明。

我有一个完美的项目的jar文件。现在我需要对应用程序进行一些更改,以便使用此命令提取该jar。

  jar xf jwire.jar

提取的文件是

  • META-INF(包含清单文件)
  • 资源(包含申请中使用的图片)
  • Jwire(包含类和java文件)
  • 的.classpath
  • 的.project
  • manifest.mf(另一个包含其他主要类路径的清单文件)

我还在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文件有关。

我希望这个问题是可以理解的。我们将非常感谢明确而详细的答案。

2 个答案:

答案 0 :(得分:1)

您应该按jar uf jar-file input-file(s)

更新JAR文件

请参阅此链接: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