为什么 un-jar 然后 jar 再次破坏我的 Spring Boot web 应用程序?

Why does un-jar then jar again break my Spring Boot web app?

我构建了一个 Spring 启动网络应用程序(使用 Eclipse/STS),它有一个嵌入式 tomcat 服务器。

我需要对 WAR 文件中的 类 做一些(混淆)处理,然后再次压缩它,但在我尝试之前,我先解压缩然后再压缩以确保它会起作用。

但是当我解压缩然后重新压缩时,它不会再 运行 ...

重现步骤:

  1. 运行 像这样的应用程序... java -jar myapp.war ... 它工作正常。终止应用程序。

  2. 像这样“解压缩”war ... jar -xf myapp.war ...所有内容都已提取。

  3. 删除原来的war文件...rm myapp.war

  4. 像这样将内容“重新压缩”成 war ... jar -cfv myapp.war .

  5. 运行 新的 war 文件 ... java -jar myapp.war ... 我得到一个错误 ...

no main manifest attribute, in myapp.war

当我提取新 war 文件的内容时,我看到原来的 /META-INF/MANIFEST.MF 文件已被替换为:

Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)

我可能在上面的第 (4) 步做错了什么。有任何想法吗?有没有我想做的“Spring 引导”特定的事情?

看来我明白了...我必须使用 m 选项并像这样指定清单文件...

jar -cfm myapp.war ./META-INF/MANIFEST.MF .

我错误地认为它只会包含该目录中的现有清单文件。