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

迁移至Maven后Tomcat启动报InvalidJarIndexError问题求助

问题描述

将基于build.xml构建的Apache Tomcat应用迁移至Maven项目,安装新jar包后Tomcat启动时抛出InvalidJarIndexError: Invalid index错误。catalina.log中错误发生前提示找不到Tomcat Native库,但之前Tomcat正常启动时也有该类日志——旧日志提示与生产环境性能优化相关,新日志提示与OpenSSL相关。已检查系统jar包无损坏,尝试将tomcat-native-2.0.4.jar添加至/usr/local目录后问题依旧。

旧日志

05-Mar-2019 13:56:15.236 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

新日志

22-Jun-2023 18:36:02.206 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]

完整错误堆栈

23-Jun-2023 09:37:19.274 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
23-Jun-2023 09:37:19.799 SEVERE [main] org.apache.catalina.startup.Catalina.load Error initializing Catalina
        org.apache.catalina.LifecycleException: Failed to initialize component [StandardServer[8005]]
                at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:139)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:724)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:746)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
        Caused by: jdk.internal.util.jar.InvalidJarIndexError: Invalid index
                at java.base/jdk.internal.loader.URLClassPath$JarLoader.getResource(URLClassPath.java:1051)
                at java.base/jdk.internal.loader.URLClassPath$JarLoader.getResource(URLClassPath.java:962)
                at java.base/jdk.internal.loader.URLClassPath$JarLoader.findResource(URLClassPath.java:937)
                at java.base/jdk.internal.loader.URLClassPath.findResource(URLClassPath.java:296)
                at java.base/java.net.URLClassLoader$2.run(URLClassLoader.java:629)
                at java.base/java.net.URLClassLoader$2.run(URLClassLoader.java:627)
                at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
                at java.base/java.net.URLClassLoader.findResource(URLClassLoader.java:626)
                at java.base/java.lang.ClassLoader.getResource(ClassLoader.java:1403)
                at org.apache.tomcat.util.modeler.Registry.loadDescriptors(Registry.java:678)
                at org.apache.tomcat.util.modeler.Registry.findDescriptor(Registry.java:724)
                at org.apache.tomcat.util.modeler.Registry.findManagedBean(Registry.java:504)
                at org.apache.tomcat.util.modeler.Registry.registerComponent(Registry.java:639)
                at org.apache.catalina.util.LifecycleMBeanBase.register(LifecycleMBeanBase.java:156)
                at org.apache.catalina.util.LifecycleMBeanBase.initInternal(LifecycleMBeanBase.java:57)
                at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:994)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
                ... 8 more
解决方案

首先明确:Tomcat Native库找不到的日志是INFO级别,属于非致命提示,和本次InvalidJarIndexError错误无关,之前正常启动时也存在该日志,可忽略。

针对InvalidJarIndexError错误,按以下步骤排查:

  • 检查jar包索引文件:该错误是JDK读取jar包的META-INF/INDEX.LIST文件时出错,遍历项目依赖的所有jar包,用unzip -p your.jar META-INF/INDEX.LIST命令检查文件格式,找到异常jar包后重新下载替换。
  • 清理Maven缓存:执行mvn clean install -U命令,强制更新依赖并清理本地仓库中可能损坏的缓存jar包。
  • 清理部署目录:删除Tomcatwebapps/your-app/WEB-INF/lib目录下的所有文件,重新部署Maven构建的war包,避免旧build.xml残留的jar包与新依赖冲突。
  • 检查JDK与Tomcat兼容性:从堆栈信息判断当前使用Java 17,需确保Tomcat版本为9.0.50+或10+,若版本不匹配则升级Tomcat或调整JDK版本。

关于Tomcat Native库的补充:若要解决该INFO提示,需安装对应系统架构的本地库文件(.so/.dll),而非tomcat-native-2.0.4.jar,将本地库放入java.library.path指定的目录(如/usr/lib64)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:36:59