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

AlmaLinux下Tomcat9搭配Java8部署WAR包启动报错求助

问题描述

我正在搭建一个包含多Tomcat、多OpenLogic JDK版本的测试环境。将WAR包放入/opt/apache-tomcat-9.0.97/webapps目录并重启服务器后,catalina.out中出现部署失败报错。

报错日志
org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [/opt/apache-tomcat-9.0.97/webapps/name-of.war
        java.lang.IllegalStateException: Error starting child
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:602)
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603)
                at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1014)
                at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1866)
                at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
                at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:816)
                at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468)
                at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584)
                at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
                at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
                at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)
                at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:735)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
        Caused by: org.apache.catalina.LifecycleException: Error starting the loader
                at org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:380)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4314)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
                ... 37 more
        Caused by: java.lang.ClassNotFoundException: org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader
                at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
                at java.lang.Class.forName0(Native Method)
                at java.lang.Class.forName(Class.java:264)
                at org.apache.catalina.loader.WebappLoader.createClassLoader(WebappLoader.java:483)
                at org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:357)
                ... 41 more
错误解析

核心问题是**java.lang.ClassNotFoundException: org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader**——Tomcat启动Web应用加载器时,找不到Spring框架提供的Tomcat可 instrumentation 类加载器。

常见触发原因:

  • 当前运行Tomcat的JDK版本与WAR包依赖的Spring版本不兼容,你提到需要使用openlogic-openjdk-8u432-b06-linux-x64,说明当前环境JDK版本不符合要求,导致Spring相关类无法正常加载。
  • WAR包中缺少spring-instrument-tomcat依赖,或该依赖版本与Tomcat 9.0.97不匹配。
  • Tomcat类加载器配置异常,破坏了默认加载逻辑,导致无法读取WEB-INF/lib下的Spring相关jar包。
解决步骤
  • 切换指定JDK版本:
    1. 下载并解压openlogic-openjdk-8u432-b06-linux-x64到服务器目录,比如/opt/openlogic-openjdk-8u432-b06-linux-x64
    2. 编辑Tomcat启动脚本bin/setenv.sh(无则新建),添加环境变量指定JDK路径:
      export JAVA_HOME=/opt/openlogic-openjdk-8u432-b06-linux-x64
      export PATH=$JAVA_HOME/bin:$PATH
      
    3. 重启Tomcat,执行bin/version.sh验证JDK版本是否正确。
  • 检查WAR包依赖:确认WEB-INF/lib下存在spring-instrument-tomcat相关jar包,版本需适配Spring框架和Tomcat 9.x。
  • 检查Tomcat配置:确保conf/context.xml中无错误的自定义类加载器配置,避免干扰默认加载逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:30:03