检查jar冲突,查找存在相同class的jar

写在前面

本文看下如何查找jar冲突,即查找哪些jar包中存在相同的class。如果是存在相同jar的不同版本,基本一眼就能看出来,然后结合maven的依赖关系将其剔除掉即可,但是当你遇到了有人手动拷贝某些class到jar包中导致冲突的情况时,就欲哭无泪了,而我就曾掉入此🕳,灰常痛苦。所以本文就给出一段这样的程序,方便检测。

1:代码

package com.dahuyou.asr.demo;import com.sun.org.apache.xpath.internal.objects.XString;import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;public class scan_class {public static void main(String[] args) {String jarDirectoryPath="d:\\test\\lib";File directory = new File(jarDirectoryPath);File[] files = directory.listFiles(((dir, name) -> name.endsWith(".jar")));HashMap<String, String> hashMap = new HashMap<>();for (File jarFile : files){try {System.out.println(jarFile.getName());JarFile jar = new JarFile(jarFile);Enumeration<JarEntry> entries = jar.entries();while (entries.hasMoreElements()) {JarEntry jarEntry = entries.nextElement();String name = jarEntry.getName();if (name.endsWith(".class")) {String className=name.replace("/",".");if(hashMap.containsKey(className)){System.out.println("冲突的类:"+className);System.out.println("存在于:"+hashMap.get(className)+"和:"+jarFile.getName());}else {hashMap.put(className,jarFile.getName());
//                            System.out.println("写入:"+className+"  "+jarFile.getName());}}}} catch (IOException e) {System.err.println("无法读取 JAR 文件: " + jarFile.getName());e.printStackTrace();}}}}

测试jar,运行:
在这里插入图片描述
另,程序readme:

功能:
检测某一路径下所有jar包的冲突类。使用:
此处换成文件路径即可
String jarDirectoryPath="E:\\BaiduSyncdisk\\ZGM\\work\\bigdata_note\\软件安装\\seatunnel-2.3.3\\backend\\apache-seatunnel-2.3.3\\lib";

小程序,大作用!!!

写在后面

有时候,你想到了方案,却觉得麻烦而不去做,反而会导致更大的麻烦,所以,想到了就去做,工作如此,生活也亦应如此!!!

参考文章列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/438399.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wpf实现新用户页面引导

第一步 第二部 部分代码: private void show(int xh, FrameworkElement fe, string con, Visibility vis Visibility.Visible) {Point point fe.TransformToAncestor(Window.GetWindow(fe)).Transform(new Point(0, 0));//获取控件坐标点RectangleGeometry rg new Rectangl…

FP7209: 用于紫外线消毒灯的 升压LED恒流驱动芯片

现在社会对于居家消毒也越发重视起来。而居家消毒除了75%浓度酒精及各类消毒液外&#xff0c;利用紫外线灯给衣物表面、房间消毒也是一种很好的选择。FP7209 定位于低压线性恒流驱动&#xff0c;精度高、外围电路简单、使用方便且可靠性高&#xff0c;更可广泛应用于商业照明系…

鸿蒙harmonyos next flutter通信之BasicMessageChannel获取app版本号

本文将通过BasicMessageChannel获取app版本号&#xff0c;以此来演练BasicMessageChannel用法。 建立channel flutter代码&#xff1a; //建立通道 BasicMessageChannel basicMessageChannel BasicMessageChannel("com.xmg.basicMessageChannel",StringCodec());…

STM32自动下载电路分享及注意事项

文章目录 简介ISP下载启动配置 USB转串口芯片CH340C手动isp下载自动isp下载RTS、DTR电平变化分析注意事项 简介 在嵌入式开发中&#xff0c;使用STM32下载程序&#xff0c;可以通过仿真器下载&#xff0c;也可以通过串口下载。在stm32串口下载时&#xff0c;我们需要手动配置启…

【IPv6】IPv6地址格式及地址分类(组播、单播、任播)整理

IPv6地址格式 IPv6 地址从 IPv4 地址的 32 bits 扩展到 128 bits&#xff0c;IPv6 地址的表示、书写方式也从 IPv4 的点分十进制&#xff0c;修改16进制的冒号分割 IPv4 点分格式(.) 192.168.11.11 IPv6 冒号分割(:) 2408:8459:3032:0000:0000:0000:0001:a9fd IPv6 的规范…

Axure大屏可视化模板在不同领域中的实际应用案例

一、农业领域 案例背景&#xff1a; 智慧农业是当前农业发展的重要趋势&#xff0c;通过物联网、大数据等技术手段&#xff0c;实现农业生产的智能化管理。Axure大屏可视化模板在智慧农业平台的建设中发挥了重要作用。 实际应用&#xff1a; 农田环境监控&#xff1a;通过Axu…

828华为云征文 | 华为云Flexus云服务器X实例搭建企业内部VPN私有隧道,以实现安全远程办公

VPN虚拟专用网络适用于企业内部人员流动频繁和远程办公的情况&#xff0c;出差员工或在家办公的员工利用当地ISP就可以和企业的VPN网关建立私有的隧道连接。 通过拨入当地的ISP进入Internet再连接企业的VPN网关&#xff0c;在用户和VPN网关之间建立一个安全的“隧道”&#xff…

智慧环保大数据平台建设方案

1. 智慧环保现状与挑战 随着环境问题日益严重&#xff0c;环境事件频发&#xff0c;如贵州都匀矿渣污染、云南南盘江水污染等&#xff0c;以及癌症高发率的出现&#xff0c;智慧环保建设显得尤为重要。智慧环保旨在通过技术手段提升环境管理和决策的智能化水平。 2. 宏观环境…

OpenCV Canny()函数

OpenCV Canny()函数被用来检测图像物体的边缘。其算法原理如下&#xff1a; 高斯滤波&#xff1a;使用高斯滤波器平滑图像以减少噪声。高斯滤波器是一种线性滤波器&#xff0c;可以消除图像中的高频噪声&#xff0c;同时保留边缘信息。计算梯度强度和方向&#xff1a;使用Sobe…

MySQL高阶2010-职员招聘人数2

目录 题目 准备数据 分析数据 总结 题目 一家公司想雇佣新员工。公司的工资预算是 $70000 。公司的招聘标准是&#xff1a; 继续雇佣薪水最低的高级职员&#xff0c;直到你不能再雇佣更多的高级职员。用剩下的预算雇佣薪水最低的初级职员。继续以最低的工资雇佣初级职员&…

【华为HCIP实战课程三】动态路由OSPF的NBMA环境建立邻居及排错,网络工程师

一、NBMA环境下的OSPF邻居建立问题 上节我们介绍了NBMA环境下OSPF邻居建立需要手动指定邻居,因为NBMA环境是不支持广播/组播的 上一节AR1的配置: ospf 1 peer 10.1.1.4 //手动指定邻居的接口地址,而不是RID peer 10.1.1.5 area 0.0.0.0 手动指定OSPF邻居后抓包查看OSP…

自动驾驶-轨迹拼接

在进行自动驾驶的规划之前&#xff0c;要确定当前帧轨迹规划的起点&#xff0c;这个起点常被误认为是当前车辆的位置&#xff0c;即每次以车辆的当前位置进行轨迹规划&#xff1b;其实不是这样的&#xff0c;直观上&#xff0c;这会导致本次次规划的轨迹同上次规划的轨迹之间是…

IDEA 使用技巧与插件推荐

目录 前言1. IDEA 使用技巧1.1 快捷键优化与应用1.2 高效调试与日志分析1.3 代码模板与片段的自定义 2. 插件推荐2.1 MyBatisX2.2 Lombok2.3 CheckStyle-IDEA2.4 Key Promoter X2.5 GitToolBox2.6 Rainbow Brackets 3. IDEA 性能优化3.1 内存与堆栈设置3.2 禁用不必要的插件3.3…

设计模式——责任链模式

哈喽&#xff0c;各位盆友们&#xff01;我是你们亲爱的学徒小z&#xff0c;今天给大家分享的文章是设计模式的——责任链模式。 文章目录 定义通用类图1.具体代码2.责任链模式的组成&#xff1a;3.责任链模式的优点&#xff1a;4.责任链模式的缺点&#xff1a; 实际应用&#…

向日葵软件安装失败

一开始点击普通下载&#xff0c;下载完毕后&#xff0c;安装了好几次也没安装成功。 查找解决方法后 在控制面板-程序和功能&#xff0c;寻找已安装 的向日葵 手动卸载已安装但是又没成功的向日葵 重新点击普通下载&#xff0c;下载完安装还是失败。 于是改为安全下载&…

夜间道路目标检测数据集 5000张 夜间道路 带标voc yolo

夜间道路目标检测数据集 5000张 夜间道路 带标voc yolo 夜间道路目标检测数据集 5000张 夜间道路 带标voc yolo label | pic_ num | box_ num car: (4907, 43417) pedestrian: (1039, 3520) traffic light: (3276, 15271) traffic sign: (4072, 15821) bicycle: (155, 233) bus…

开发人员智能助手

据说AI可以代替开发人员&#xff0c;目前看暂时不用担心&#xff0c;不仅不担心&#xff0c;还要主动使用它。 过去有了问题需要自己各网站搜索&#xff0c;真真假假的东西太多&#xff0c;很难找到正确答案&#xff0c;现在可以问智能体了&#xff1a; 1、JAVA开发大师 htt…

ElasticSearch备考 -- 多字段查询

一、题目 索引task有3个字段a、b、c&#xff0c;写一个查询去匹配这三个字段为mom&#xff0c;其中b的字段评分比a、c字段大一倍&#xff0c;将他们的分数相加作为最后的总分数 二、思考 通过题目要求对多个字段进行匹配查询&#xff0c;可以考虑multi match、bool query操作。…

【C++】——list的介绍和模拟实现

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;Yan. yan.                        …

1.9 物理层设备

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言1 中继器1.1 基本定义1. 2 工作原理 2 集线器2.1 基本定义2.2 工作原理2.3 冲突域 3 中继器与集线器的比较 前言 计算机网络的物理层是OSI模型中的第一层&#xff0c;主要…