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

WebLogic 12.2.1.3.0运行应用遇Spring Aop类找不到问题求助

解决WebLogic 12.2.1.3.0中Spring AOP类找不到的问题

嘿,这个问题我之前帮不少人解决过——WebLogic的类加载机制有时候就是这么让人头疼,明明jar就在那儿,它偏要找别的地方的类。给你几个针对性的步骤,你一步步排查试试:

1. 先把配置的优先级和正确性捋清楚

WebLogic里<prefer-web-inf-classes>和<prefer-application-packages>同时用可能会有冲突,前者是让WebLogic优先拿WEB-INF/lib里的类,后者是指定优先加载应用里的特定包。我建议你先调整配置,要么单独用其中一个,要么把包匹配写得更精确:

如果你是部署WAR包(修改weblogic.xml)

确保配置放在<container-descriptor>标签下,语法不能错:

<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
  <container-descriptor>
    <!-- 先单独开这个试试,看能不能生效 -->
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
    <!-- 如果单独开上面的不行,再加精确的包配置,别只写org.springframework.*,细分到子包更稳妥 -->
    <prefer-application-packages>
      <package-name>org.springframework.aop.*</package-name>
      <package-name>org.springframework.beans.*</package-name>
      <package-name>org.springframework.context.*</package-name>
      <!-- 按需要添加其他用到的Spring子包 -->
    </prefer-application-packages>
  </container-descriptor>
</weblogic-web-app>

如果你是部署EAR包(修改weblogic-application.xml)

要是你的应用是EAR格式,得确保配置放在正确的位置,覆盖所有子模块:

<weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.7/weblogic-application.xsd">
  <prefer-application-packages>
    <package-name>org.springframework.aop.*</package-name>
    <package-name>org.springframework.*</package-name>
  </prefer-application-packages>
  <!-- 要是EAR里有多个WAR,也可以在每个WAR的weblogic.xml里单独配置,更精准 -->
</weblogic-application>

2. 检查WebLogic是不是自带了Spring类

WebLogic 12.2.1.x在$WL_HOME/modules目录下可能藏着Spring相关的jar,这些会被系统类加载器优先加载,抢了你应用里的jar的风头。你可以:

  • 去WebLogic安装目录搜搜spring相关的jar,看看有没有和你用的3.0.2版本冲突的
  • 测试环境下可以暂时把这些内置的Spring jar移走,重新部署看看问题解决没(生产环境别直接动,风险太高)
  • 生产环境就靠<prefer-application-packages>强制WebLogic用你应用里的包,记得把所有冲突的子包都写上

3. 确认你的应用包真的完整

有时候眼睛看到的不一定对——你得确认jar确实在正确的位置,而且里面有你要的类:

  • 解压你的WAR/EAR包,看看WEB-INF/lib里是不是真有spring-aop-3.0.2.RELEASE.jar
  • 打开这个jar,检查里面有没有org.springframework.aop.framework.AopConfigException类,用命令行的话可以跑:jar tf spring-aop-3.0.2.RELEASE.jar | grep AopConfigException
  • 要是jar里没这个类,说明你下的依赖包有问题,重新找个正确的版本下载

4. 开类加载器日志看真相

要是上面的步骤都没解决,那就让WebLogic自己告诉你它在找什么类——开类加载器调试日志:

  • 登录WebLogic控制台,找到你的服务器,进“日志”->“日志配置”,添加日志类别weblogic.classloading,级别设成Debug
  • 重新部署应用,然后去看日志,找关于org.springframework.aop.framework.AopConfigException的记录,看看它是从哪个位置加载的(或者为什么找不到)
  • 根据日志里的信息,调整你的包优先级配置,精准打击

5. 试试过滤类加载器(EAR专属)

要是你部署的是EAR,还可以用<filtering-classloader>标签让WebLogic的系统类加载器忽略指定的包,强制从应用里拿:

<weblogic-application>
  <filtering-classloader>
    <filter>
      <pattern>org.springframework.aop.*</pattern>
      <pattern>org.springframework.*</pattern>
    </filter>
  </filtering-classloader>
</weblogic-application>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:23:41