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

Spring版本升级后Tomcat部署WAR包出现FileNotFoundException求助

问题描述

我们将应用从Spring 4.3.2.RELEASE 升级至 4.3.30.RELEASE 后,在以下环境部署.war包时出现FileNotFoundException:

  • JDK:8
  • Tomcat:8
  • Spring:4.3.30.RELEASE

已通过Maven War插件配置排除旧版本JAR,且确认WEB-INF/lib中无*-4.3.2.RELEASE.jar文件,但系统仍在查找spring-core-4.3.2.RELEASE.jar。

Maven配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <webappDirectory>${env.WAR_PATH}</webappDirectory>
        <packagingExcludes>WEB-INF/lib/*-4.3.2.RELEASE.jar</packagingExcludes>
    </configuration>
</plugin>

异常栈信息:

java.io.FileNotFoundException: /opt/tomcat/{appName}/WEB-INF/lib/spring-core-4.3.2.RELEASE.jar (No such file or directory)
    java.util.zip.ZipFile.open(Native Method)
    java.util.zip.ZipFile.<init>(ZipFile.java:219)
    java.util.zip.ZipFile.<init>(ZipFile.java:149)
    java.util.jar.JarFile.<init>(JarFile.java:166)
    java.util.jar.JarFile.<init>(JarFile.java:103)
    org.apache.catalina.webresources.AbstractArchiveResourceSet.openJarFile(AbstractArchiveResourceSet.java:308)
    org.apache.catalina.webresources.JarResourceSet.getArchiveEntry(JarResourceSet.java:119)
    org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:260)
    org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281)
    org.apache.catalina.webresources.Cache.getResource(Cache.java:63)
    ...
排查思路
  • 清理Tomcat缓存与残留

    1. 停止Tomcat,删除work/Catalina/localhost/{appName}下的所有缓存文件,这些缓存可能留存了旧依赖的路径记录。
    2. 清空Tomcat的temp目录,避免临时文件残留导致的引用异常。
    3. 检查webapps目录,确认是否存在旧版本应用的解压文件夹,若有则彻底删除。
  • 排查Maven依赖树
    执行mvn dependency:tree命令,查看所有依赖的传递关系,确认是否有第三方依赖仍引用Spring 4.3.2.RELEASE版本。如果发现,在对应依赖中添加<exclusions>节点排除旧版本Spring包。

  • 检查配置文件中的硬编码引用

    1. 搜索项目内所有配置文件(如applicationContext.xml、web.xml、.properties/.yml文件),查看是否存在硬编码的spring-core-4.3.2.RELEASE.jar路径或版本引用。
    2. 检查自定义类加载器、资源加载相关代码,确认是否有硬指定该JAR的逻辑。
  • 验证WAR包内的Manifest文件
    解压WAR包,查看META-INF/MANIFEST.MF文件,检查Class-Path属性是否引用了旧版本Spring JAR。若有,修改Maven配置移除该引用。

  • 检查Tomcat全局依赖
    查看Tomcat的lib目录,确认是否存在Spring 4.3.2.RELEASE的JAR;同时检查conf/catalina.properties文件,确认是否有共享依赖配置引用了该旧版本JAR。

  • 重新构建并校验WAR包
    执行mvn clean package重新构建,确保构建过程清除了旧依赖缓存。构建完成后,再次解压WAR包,确认WEB-INF/lib中无*-4.3.2.RELEASE.jar,同时检查包内其他文件是否存在旧版本路径引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:44:56