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

Weblogic 12.1.3.0部署Spring应用报错求助:NoSuchMethodError

解决WebLogic部署Spring应用时的NoSuchMethodError: org.springframework.aop.framework.AopProxyUtils.getSingletonTarget问题

这个报错几乎可以肯定是Spring版本冲突导致的——WebLogic服务器自带了旧版本的Spring类库,而你的应用打包了更高版本的Spring,当WebLogic加载类时,优先使用了服务器自带的旧版本Spring,而getSingletonTarget方法是在较新的Spring版本中才引入的,旧版本没有这个方法,所以抛出了这个错误。

下面是具体的解决步骤:

  • 步骤1:配置WebLogic类加载隔离,优先使用应用内的类
    在你的应用的WEB-INF目录下创建或修改weblogic.xml文件,添加prefer-application-packages配置,告诉WebLogic优先加载应用自身打包的Spring、CXF、Hibernate相关类,而不是服务器自带的版本。示例配置如下:

    <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-application-packages>
                <!-- 优先加载应用内的Spring所有包 -->
                <package-name>org.springframework.*</package-name>
                <!-- CXF相关包也需要隔离,避免和WebLogic自带的冲突 -->
                <package-name>org.apache.cxf.*</package-name>
                <!-- 如果Hibernate也有版本冲突,同样添加 -->
                <package-name>org.hibernate.*</package-name>
            </prefer-application-packages>
        </container-descriptor>
    </weblogic-web-app>
    
  • 步骤2:检查应用依赖,确保Spring版本统一
    有时候应用自身的依赖也会混入不同版本的Spring jar,比如某些第三方依赖引入了旧版本的Spring。你可以用Maven的依赖树命令排查:

    mvn dependency:tree
    

    查看输出结果,找出所有Spring相关的依赖,确保它们的版本和你应用中使用的Spring主版本一致。如果发现冲突的旧版本依赖,在pom.xml中用<exclusions>标签排除掉。

  • 步骤3:验证WebLogic的JMS/DataSource配置
    虽然这个报错核心是类加载问题,但也可以快速确认一下WebLogic的JMS队列/连接池、DataSource的配置是否正确,避免因为资源配置问题间接引发类加载异常(比如初始化Spring上下文时因为资源无法获取导致的连锁问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:33:24