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

Spring Boot应用LaunchedURLClassLoader加载类时触发AssertionError求助

问题描述

我的Spring Boot应用在LaunchedURLClassLoader尝试加载类时,出现了意外的AssertionError。根据代码逻辑,该错误本不应出现,但问题无法稳定复现,已困扰我许久。

相关堆栈跟踪:

java.lang.AssertionError: Package org.apache.commons.lang3.exception has already been defined but it could not be found
    at org.springframework.boot.loader.LaunchedURLClassLoader.definePackageIfNecessary(LaunchedURLClassLoader.java:120)
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:81)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:574)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:574)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)

排查步骤与解决方案

  • 检查依赖冲突:排查commons-lang3相关依赖是否重复引入,或不同版本的commons-lang3被同时加载。用mvn dependency:tree(Maven)或./gradlew dependencies(Gradle)生成依赖树,排除冗余或冲突的依赖。
  • 升级/回退Spring Boot版本:该问题可能与特定版本的Spring Boot Loader兼容性有关,尝试升级到最新稳定版,或回退到已知无此问题的版本。
  • 检查自定义类加载逻辑:如果应用有自定义ClassLoader,确认其不会提前加载org.apache.commons.lang3.exception下的类,避免干扰LaunchedURLClassLoader的正常工作。
  • 验证打包配置:检查Spring Boot打包插件的配置,确保打包过程中没有包丢失或重复打包的情况。比如确认是否开启了可能影响依赖打包的配置项。
  • 启用类加载日志:添加JVM参数-verbose:class启动应用,记录类加载的详细过程。问题复现时,查看org.apache.commons.lang3.exception相关类的加载来源,定位冲突点。
  • 排查多线程类加载场景:如果应用存在多线程同时加载类的情况,可能触发LaunchedURLClassLoader的并发问题。尝试在类加载关键路径添加同步逻辑,或调整线程启动顺序,验证是否能缓解问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:47:16