Caused by: org.apache.catalina.LifecycleException: Failed to read the manifest from the archive [..\lib\aspectjweaver-1.8.12.jar] 解决方案

tomcat11 启动报错:

23-Sep-2026 06:05:17.249 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\webapps\ROOT]
23-Sep-2026 06:05:17.566 严重 [main] org.apache.catalina.startup.HostConfig.deployDirectory 无法部署应用目录 [D:\webapps\ROOT]
        java.lang.IllegalStateException: 启动子级时出错
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:586)
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:677)
                at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)
                at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1889)
                at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:92)
                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:125)
                at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:996)
                at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:412)
                at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1612)
                at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:286)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:115)
                at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:395)
                at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:342)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:759)
                at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:794)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1204)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1200)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:92)
                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:149)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:732)
                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:201)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:871)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:883)
                at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
                at java.base/java.lang.reflect.Method.invoke(Method.java:565)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:482)
        Caused by: org.apache.catalina.LifecycleException: Failed to read the manifest from the archive [D:\webapps\ROOT\WEB-INF\lib\aspectjweaver-1.8.12.jar]
                at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:155)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:128)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:161)
                at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:783)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
                at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4305)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4427)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:583)
                ... 34 more
        Caused by: java.util.zip.ZipException: Invalid CEN header (invalid zip64 extra data field size)
                at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1831)
                at java.base/java.util.zip.ZipFile$Source.checkZip64ExtraFieldValues(ZipFile.java:1345)
                at java.base/java.util.zip.ZipFile$Source.checkExtraFields(ZipFile.java:1305)
                at java.base/java.util.zip.ZipFile$Source.checkAndAddEntry(ZipFile.java:1224)
                at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1767)
                at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:1542)
                at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1506)
                at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:704)
                at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:204)
                at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:150)
                at java.base/java.util.jar.JarFile.<init>(JarFile.java:333)
                at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:151)
                ... 42 more
23-Sep-2026 06:05:17.575 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\webapps\ROOT]的部署已在[320]毫秒内完成
23-Sep-2026 06:05:17.584 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["https-jsse-nio-127.0.0.1-8000"]
23-Sep-2026 06:05:17.611 信息 [main] org.apache.catalina.startup.Catalina.start [421]毫秒后服务器启动

 

这个报错的原因是:从 JDK 21 升级到 25 后,JDK 对 ZIP/JAR 文件的校验更加严格,而你的应用依赖的 aspectjweaver-1.8.12.jar 是一个旧版本,其内部 ZIP64 头结构不符合规范,导致 Tomcat 无法读取该文件并启动失败。

根本原因

JDK 在较新的版本中(包括 21 的后续更新及 25)加强了对 ZIP64 扩展字段的校验。你的 aspectjweaver-1.8.12.jar 在生成时使用了有缺陷的工具(可能是旧版 Ant 或 BND),导致 JAR 内部的 ZIP64 额外字段数据无效。Tomcat 启动时扫描 WEB-INF/lib 下的所有 JAR,读到这个文件时就抛出了 Invalid CEN header 异常。

解决方案

方案一:升级 aspectjweaver 依赖(推荐)

将 aspectjweaver 升级到 1.8.14 或更高版本。OpenJDK 官方已确认 1.8.14 修复了该 JAR 的 ZIP64 规范符合性问题。

方案二:添加 JVM 启动参数(快速绕过)

如果暂时无法升级依赖,可以在 Tomcat 的启动参数中添加以下系统属性来禁用 ZIP64 校验:

bash
-Djdk.util.zip.disableZip64ExtraFieldValidation=true

注意:Tomcat 本身支持这个参数,但该属性无法绕过 javac 或 ZipFileSystem 中的校验。不过对于 Tomcat 部署场景,这个开关通常足够让服务启动起来。

页面地址(查看所有版本)

 

posted @ 2026-09-23 06:15  锐洋智能  阅读(3)  评论(0)    收藏  举报