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

Weblogic 12c部署Spring应用遇DefaultFlashMapManager类找不到异常求助

解决Weblogic 12c部署Spring 5.1.0 REST应用时的ClassNotFoundException: DefaultFlashMapManager问题

这个异常的核心原因是Weblogic的类加载机制优先加载了自带的旧版本Spring类,或者你的应用缺少Spring MVC核心依赖,结合你的配置和环境差异,我整理了以下针对性的解决方案:

1. 确保Spring Web MVC依赖完整且版本统一

DefaultFlashMapManager是Spring MVC模块(spring-webmvc)中的核心类,你需要确认:

  • 项目依赖中明确引入了spring-webmvc:5.1.0.RELEASE,且版本和Spring其他组件(如spring-context、spring-web)完全一致。
  • 打包时该JAR被包含在WAR包的WEB-INF/lib目录下(检查Maven/Gradle的依赖scope为compile,而非provided,否则打包时会遗漏)。

2. 修正weblogic.xml的类加载优先级配置

你的配置里存在重复的org.springframework包声明,这可能导致Weblogic解析时出现异常,优化后的配置如下:

<wls:prefer-application-packages>
    <wls:package-name>org.springframework.*</wls:package-name>
    <wls:package-name>org.jboss.logging.*</wls:package-name>
    <wls:package-name>com.fasterxml.*</wls:package-name>
    <wls:package-name>com.sun.xml.ws.api.wsdl.parser.*</wls:package-name>
</wls:prefer-application-packages>
<!-- 可选:添加资源优先级配置,加强应用资源的加载权重 -->
<wls:prefer-application-resources>
    <wls:resource-name>org.springframework.*</wls:resource-name>
</wls:prefer-application-resources>

通配符*可以更全面地覆盖Spring的所有子包,确保Weblogic优先加载你应用自带的Spring 5.1.0类,而非服务器自带的旧版本。

3. 同步Spring MVC Schema版本与Spring版本

你的applicationContext.xml中使用了spring-mvc-4.3.xsd,但Spring版本是5.1.0,Schema版本不匹配可能导致配置解析时的类路径异常,修正为对应版本的Schema:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/mvc 
                           http://www.springframework.org/schema/mvc/spring-mvc-5.1.xsd
                           http://www.springframework.org/schema/tx 
                           http://www.springframework.org/schema/tx/spring-tx-5.1.xsd
                           http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans-5.1.xsd
                           http://www.springframework.org/schema/context 
                           http://www.springframework.org/schema/context/spring-context-5.1.xsd">
    <!-- 原有配置内容保持不变 -->
</beans>

确保所有Spring相关的Schema版本都与5.1.0对应,避免配置解析时的兼容性问题。

4. 验证WAR包的完整性

打包后解压WAR包,检查WEB-INF/lib目录下是否存在:

  • spring-webmvc-5.1.0.RELEASE.jar
  • 所有其他Spring 5.1.0版本的核心JAR(如spring-context、spring-web、spring-core等)

如果缺少任何一个,排查打包工具的配置,确保依赖被正确引入。

为什么开发环境Tomcat正常?

Tomcat本身不自带Spring类库,所有依赖都从应用的WEB-INF/lib加载,不会出现类加载冲突;而Weblogic通常内置了旧版本的Spring组件,当你的应用没有明确指定类加载优先级时,Weblogic会优先加载自带的旧版本,导致找不到Spring 5.1.0新增或变更的类(比如DefaultFlashMapManager的路径或实现可能在旧版本中不存在)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:13:59