news 2026/5/26 5:08:21

Java应用JDK及依赖库兼容问题扫描工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java应用JDK及依赖库兼容问题扫描工具

1. Java 应用 JDK 及依赖库兼容问题扫描工具(内容还需要修改)

1.1. 背景

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 重新编译,因此在编译阶段无法发现此类问题

同时由于测试环境与生产环境的交易量、触发频率差异,及测试难以覆盖全部场景等原因,在测试环境测试阶段可能无法发现此类问题,等到发布到生产环境后出现问题时才被发现

1.2. 工具作用

当前工具支持对以下问题进行查找

检查代码中被引用但找不到的类 检查代码中有使用但不存在或不允许访问的方法 检查代码中有使用但不存在或不允许访问的字段 检查类名完全相关的类

1.3. 环境依赖

需要使用 JDK8 及以上版本运行

使用 H2 本地数据库,可不依赖其他数据库

1.4. 快速检查模式

1.4.1. 检查内容

检查代码中被引用但找不到的类

1.4.2. 执行方式

1.4.3. 执行结果检查

执行结果生成在项目根目录的“_jacg_jar_compatibility”目录,每次会在该目录下生成一个新的目录

打开“1. 被引用的不存在的类信息 .xlsx”,该文件内容较多是正常的,在该文件中出现的被引用但找不到的类不是全部都需要处理,因为相关的代码可能并不会被执行到

可对“引用类名”“被引用的类名”列进行筛选,检查关注的包名下的相关类

1.4.4. 执行耗时

项目中的 jar 文件数量在 200~300 左右时,通常执行耗时大约 2~4 分钟,与实际的代码量有关

1.5. 完整检查模式

1.5.1. 检查内容

检查代码中有使用但不存在或不允许访问的方法 检查代码中有使用但不存在或不允许访问的字段 检查类名完全相关的类

1.5.2. 执行方式

1.5.3. 执行耗时

项目中的 jar 文件数量在 200~400 左右时,通常执行耗时大约 15~35 分钟,与实际的代码量有关

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 3:30:46

6、搭建网站与服务器配置全攻略

搭建网站与服务器配置全攻略 1. 搭建示例网站 学习搭建网站的最佳方式是通过实践操作。你可以在自己的机器上构建一个示例网站,完成后,你将安装并配置好感兴趣的部分,还能将其作为自己系统的模型,在掌握原理后删除。这样,你可以在将服务器推向互联网之前,在家中私下练习…

作者头像 李华
网站建设 2026/5/25 20:42:04

12、网站元语言与通用网关接口入门

网站元语言与通用网关接口入门 网站元语言(WML)基础 WML 是创建静态网页的强大工具,它能将复杂页面的诸多元素封装到变量、模板和自定义标签中,实现复用,同时还融合了 Perl 的强大功能。以下通过具体示例来深入了解其应用。 项目模板创建 :以创建 www.opensourceweb…

作者头像 李华
网站建设 2026/5/25 20:41:47

14、CGI编程:表单小部件、安全考量与项目实践

CGI编程:表单小部件、安全考量与项目实践 1. 表单小部件示例与方法 在Web开发中,表单小部件是与用户交互的重要工具。以下是一个简单的表单示例: <body bgcolor="#ffffff"> <h1>An Example of Form Widgets</h1> <form action="/cg…

作者头像 李华
网站建设 2026/5/25 20:43:20

18、Embperl:强大的嵌入式 Perl 工具助力 Web 开发

Embperl:强大的嵌入式 Perl 工具助力 Web 开发 1. 快速入门 在开始使用 Embperl 之前,需要了解一些基本配置。在相关目录中,扩展名为 .txt 和 .jpg 的文件是普通文件,不需要 Embperl 处理,会直接提供。加载修改后的 Apache 配置文件,使用如下命令: # /etc/init.…

作者头像 李华
网站建设 2026/5/25 20:42:29

通义万相Wan2.1视频模型重磅开源:引领AIGC视频生成技术新高度,赋能中文场景创作革新

2025年2月28日&#xff0c;阿里云开发者社区传来重磅消息——通义万相Wan2.1视频生成模型正式对外开源。这一突破性进展不仅树立了AIGC领域视频生成技术的全新标杆&#xff0c;更凭借对中文语义的深度优化和高质量视频输出能力&#xff0c;为广大开发者、创作者及企业用户带来了…

作者头像 李华
网站建设 2026/5/25 21:24:27

【二叉树】DFS遍历的迭代理解

我们知道&#xff0c;二叉树前中后序遍历的常见写法是递归&#xff0c;而递归的底层逻辑是栈&#xff0c;所以理论上来说&#xff0c;所有递归都能用栈来实现&#xff0c;只是复杂的递归用栈实现起来会很复杂 而这种简单的递归&#xff0c;不仅用栈实现不是很复杂&#xff0c;还…

作者头像 李华