You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改MANIFEST.MF后重新打包JAR文件内容异常问题求助

问题:修改JAR的MANIFEST.MF后重新打包不生效?

我使用7zip解压了一个JAR文件,原/META-INF/MANIFEST.MF内容如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: liuyang
Class-Path: . lib/commons-logging-1.1.1.jar lib/sqljdbc4-4.0.jar
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_171
Main-Class: org.tinyradius.test.TestServer

我希望添加一条额外的Class-Path,修改后的内容为:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: liuyang
Class-Path: . lib/commons-logging-1.1.1.jar lib/log4j-1.2.17.jar lib/sqljdbc4-4.0.jar
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_171
Main-Class: org.tinyradius.test.TestServer

随后我在Windows命令行执行命令:

jar cfv tinyradius-0.9.9.jar META-INF org

生成了新的JAR文件,但解压后发现新的MANIFEST.MF内容变为:

Manifest-Version: 1.0
Created-By: 1.8.0_171 (Oracle Corporation)

请问为何修改后的内容没有生效?

原因分析与解决办法

这问题我之前也踩过坑,核心是你用的jar命令参数不对,导致系统自动生成了默认清单,完全没用到你修改好的文件。

  • 问题根源:你用的cfv参数组合里,c是创建新JAR包,但默认情况下jar工具不会读取你已修改的META-INF下的清单,而是直接生成一个极简的默认版本——也就是你看到的只有Manifest-Version和Created-By的那个。

  • 正确的打包命令:
    你需要加上m参数来指定使用你修改后的MANIFEST.MF,命令应该改成这样:

    jar cmfv tinyradius-0.9.9.jar META-INF/MANIFEST.MF org
    

    这里的参数分别是:

    • c:创建新JAR包
    • m:指定自定义的清单文件(这是让修改生效的关键!)
    • f:指定输出的JAR文件名
    • v:显示打包过程的详细日志
  • 额外要注意的细节:

    • 执行命令时,一定要在你解压JAR后的根目录下(就是包含META-INF和org文件夹的那个目录),不然会找不到清单文件或者类文件
    • 确保你修改后的MANIFEST.MF最后一行是空行,Java的清单文件要求必须以空行结尾,否则最后一行的配置可能不被识别

内容的提问来源于stack exchange,提问作者yangl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:44