BootstrapVue Next:企业级Vue 3组件库的现代化架构实践
2026/6/11 5:06:51
Java 应用在升级 JDK 或 Java 项目依赖库版本后,可能会遇到依赖库兼容性问题,即“Jar Hell”:
项目中某个依赖库(例如 a.jar)所引用的其他库(例如 b.jar)中的类、方法、字段或注解等元素无法找到,或发生类型、修饰符变更等,导致代码执行时出现以下 Error 类型的异常,出现难以预料的结果
java.lang.IllegalAccessError java.lang.IncompatibleClassChangeError java.lang.NoClassDefFoundError java.lang.NoSuchFieldError java.lang.NoSuchMethodError具体的异常情况可参考 Java 应用升级 JDK 或依赖库可能遇到的兼容性问题
由于依赖库 a.jar 已经完成编译,在 Java 项目编译阶段不会对依赖库 a.jar 重新编译,因此在编译阶段无法发现此类问题
同时由于测试环境与生产环境的交易量、触发频率差异,及测试难以覆盖全部场景等原因,在测试环境测试阶段可能无法发现此类问题,等到发布到生产环境后出现问题时才被发现
当前工具支持对以下问题进行查找
检查代码中被引用但找不到的类 检查代码中有使用但不存在或不允许访问的方法 检查代码中有使用但不存在或不允许访问的字段 检查类名完全相关的类需要使用 JDK8 及以上版本运行
使用 H2 本地数据库,可不依赖其他数据库
检查代码中被引用但找不到的类执行结果生成在项目根目录的“_jacg_jar_compatibility”目录,每次会在该目录下生成一个新的目录
打开“1. 被引用的不存在的类信息 .xlsx”,该文件内容较多是正常的,在该文件中出现的被引用但找不到的类不是全部都需要处理,因为相关的代码可能并不会被执行到
可对“引用类名”“被引用的类名”列进行筛选,检查关注的包名下的相关类
项目中的 jar 文件数量在 200~300 左右时,通常执行耗时大约 2~4 分钟,与实际的代码量有关
检查代码中有使用但不存在或不允许访问的方法 检查代码中有使用但不存在或不允许访问的字段 检查类名完全相关的类项目中的 jar 文件数量在 200~400 左右时,通常执行耗时大约 15~35 分钟,与实际的代码量有关