Tomcat部署WAR包出现invalid header field错误求助
WAR包部署外部Tomcat 9失败:invalid header field 解决方案
核心错误是日志里反复出现的java.io.IOException: invalid header field,本质是WAR包里的MANIFEST文件(自身或依赖JAR中的)格式不合法——Eclipse内嵌Tomcat校验宽松没触发问题,外部Tomcat则严格校验导致部署失败。
解决步骤:
检查WAR自身的MANIFEST.MF
解压WAR包,找到META-INF/MANIFEST.MF用纯文本编辑器打开,重点核对:- 所有字段必须是「字段名: 值」格式,冒号后必须跟空格(比如
Manifest-Version: 1.0,不能省略空格或写错格式) - 字段名不能包含中文、特殊符号(如@、#等非规范字符)
- 多行字段值的下一行必须缩进(加空格或制表符)
- 文件末尾必须保留空白行
发现问题直接修正,再重新打包成WAR。
- 所有字段必须是「字段名: 值」格式,冒号后必须跟空格(比如
排查依赖JAR的MANIFEST文件
如果自身MANIFEST没问题,就去WEB-INF/lib目录下逐个检查JAR:- 解压每个JAR,查看内部的
META-INF/MANIFEST.MF,找出发格式错误的文件(也可通过Tomcat日志里的JarResourceSet@xxxx定位到对应JAR) - 要么替换为官方正版JAR,要么手动修正该JAR的MANIFEST后重新打包放回lib目录。
- 解压每个JAR,查看内部的
规范构建WAR包
避免用Eclipse直接导出WAR:如果用Maven/Gradle,直接执行clean package命令构建;普通动态Web项目导出时,勾选「生成部署描述符」,确保manifest配置合规。验证修复效果
将修复后的WAR包部署到外部Tomcat,启动后查看日志是否无报错,测试API是否正常响应。
内容的提问来源于stack exchange,提问作者MangeshShinde
相关产品推荐
相关产品推荐

