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

将Spring Boot应用部署至WebLogic时遇错误求排查思路

排查Spring Boot部署WebLogic时ASM相关部署错误的思路

首先,这个报错的核心是WebLogic自带的ASM工具无法解析你的应用中的类字节码,大概率是字节码版本不兼容或者类加载优先级冲突导致的,给你几个具体的排查方向:

1. 检查Java编译版本与WebLogic支持版本的匹配性

  • 先确认你的WebLogic版本支持的Java版本:比如WebLogic 12.1.3最高支持Java 8,12.2.1及以上才支持Java 11等更高版本。
  • 检查Spring Boot应用的编译配置:在pom.xml里查看maven-compiler-plugin的source和target参数,确保它们不超过WebLogic支持的Java版本。比如针对WebLogic 12.1.3,要把参数设为1.8:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
    
  • 同时检查IDE的项目SDK设置,确保编译时用的是WebLogic兼容的Java版本,避免IDE默认用更高版本编译。

2. 处理Spring Boot与WebLogic的ASM类加载冲突

WebLogic自带了旧版本的ASM库,而Spring Boot依赖的ASM版本通常更高,容易出现类加载冲突。可以通过weblogic.xml配置让WebLogic优先加载应用内的ASM类:

<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
    <!-- 其他已有配置 -->
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.objectweb.asm.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>

另外也可以检查pom.xml,确保Spring Boot的ASM依赖没有重复引入或者版本冲突的情况。

3. 修正SpringBootServletInitializer的实现

注意SpringBootServletInitializer已经实现了WebApplicationInitializer接口,不需要额外再实现这个接口,你的启动类只需按规范重写configure方法即可:

@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

重复实现接口可能会引发不必要的初始化问题。

4. 验证WAR包的打包内容

  • 解压生成的WAR包,确认WEB-INF/lib下没有spring-boot-starter-tomcat依赖(因为你已经把它的scope设为provided),如果存在的话,说明打包配置有问题,需要检查pom.xml的依赖配置是否正确。
  • 用javap -verbose 类名命令查看WEB-INF/classes下的类文件版本号,比如Java 8对应的版本号是52.0,确保和WebLogic支持的版本匹配。

5. 查看完整的WebLogic日志

你提供的日志是截断的,建议去WebLogic的服务器日志目录(一般是domain_name/servers/server_name/logs)查看完整堆栈信息,里面通常会提到具体是哪个类导致ASM解析失败,能帮你更精准定位问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:19