有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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有两个清单文件有关吗

我希望这个问题是可以理解的。请给出清晰详细的答案


共 (2) 个答案

  1. # 2 楼答案

    根据this page,在创建或更新JAR时需要有Manifest.txt存在,或者使用e选项指定主类。在你的情况下,后者可能更有意义

    jar cfe newjar.jar mypackage.MainClass G:\Project1\project