本发明涉及嵌入式,特别涉及一种类冲突检测方法、装置、设备及存储介质。
背景技术:
1、java中所有的类都需要由类加载器装载到jvm(java virtual machine,java虚拟机)中才能运行,类加载器本身也是一个类,加载器的工作就是把class文件从硬盘读取到内存中。当项目中存在不同包,版本号不同但是名称相同的class文件时,即会发生类加载冲突。若在项目加载过程中,发生类加载冲突,可能会有个别的类被重复加载,造成应用调用时的不确定或调用冲突,给用户带来不便。但是当前存在类检测方案只能获取到类加载信息,无法识别到冲突类。为了使用户更加了解类加载信息和类冲突信息,以此来减少用户进行项目修改和完善的时间,如何在文件加载时,检测出发生冲突的类,并进行冲突信息显示是本领域亟待解决的问题。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种类冲突检测方法、装置、设备及存储介质,可以基于初始化的对象启动方式保存加载文件的类并确定出冲突类,在检测类加载的同时,检测出加载时的冲突类,记录冲突类的信息,且可以在html页面中直观展示。其具体方案如下:
2、第一方面,本申请提供了一种类冲突检测方法,包括:
3、获取当前加载项目的加载文件路径,基于所述加载文件路径进行初始化得到目标对象,并确定所述目标对象的启动方式;
4、基于所述目标对象的启动方式将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中;
5、遍历所述预设类集合,确定出所述预设类集合中的冲突类,并在所述当前加载项目的同级目录下新建冲突日志文件,以将所述冲突类的冲突信息打印至所述冲突日志文件,以及根据所述冲突日志文件生成对应的json文件;
6、基于java代理将所述json文件读取到类加载工具的可读取目录下,通过类加载工具包中的html页面显示所述json文件对应的冲突信息。
7、可选的,所述获取当前加载项目的加载文件路径之前,还包括:
8、获取当前加载项目在其对应的配置文件中进行类加载冲突检测时运行的类加载器,并将所述类加载器安装至预设的自定义方法中,以通过所述自定义方法获取所述当前加载项目的加载文件路径。
9、可选的,所述基于所述目标对象的启动方式将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中,包括:
10、若所述目标对象基于预设内嵌服务器路径启动,则提取所述类加载器中类的地址数组,并遍历所述地址数组;
11、若所述地址数组中不包含空格和jar包嵌套的形式,则将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中。
12、可选的,所述基于所述目标对象的启动方式将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中,包括:
13、若所述目标对象基于jar包启动,则在所述加载文件路径下新建文件夹,以解压所述jar包至所述新建文件夹;
14、遍历所述jar包中的文件,将遍历到的文件对应的所述加载文件路径和对应的类保存至预设类集合中。
15、可选的,所述遍历所述预设类集合,确定出所述预设类集合中的冲突类,包括:
16、遍历所述预设类集合,以获取所述预设类集合中的冲突类集合;
17、遍历所述冲突类集合,确定所述冲突类集合中目标类的value值,若所述value值的取值长度大于1,则确定所述目标类为冲突类。
18、可选的,所述根据所述冲突日志文件生成对应的json文件,包括:
19、确定所述冲突日志文件中的当前加载项目位置、当前冲突类以及所述当前冲突类的位置,并生成对应的json文件。
20、可选的,所述通过类加载工具包中的html页面显示所述json文件对应的冲突信息,包括:
21、通过类加载工具包中的html页面,读取所述json文件,以通过预设显示方式建立所述json文件中的冲突信息对应的冲突类表格进行冲突信息显示。
22、第二方面,本申请提供了一种类冲突检测装置,包括:
23、启动方式确定模块,用于获取所述当前加载项目的加载文件路径,基于所述加载文件路径进行初始化得到目标对象,并确定所述目标对象的启动方式;
24、类保存模块,用于基于所述目标对象的启动方式将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中;
25、文件生成模块,用于遍历所述预设类集合,确定出所述预设类集合中的冲突类,并在所述当前加载项目的同级目录下新建冲突日志文件,以将所述冲突类的冲突信息打印至所述冲突日志文件,以及根据所述冲突日志文件生成对应的json文件;
26、信息显示模块,用于基于java代理将所述json文件读取到类加载工具的可读取目录下,通过类加载工具包中的html页面显示所述json文件对应的冲突信息。
27、第三方面,本申请提供了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述的类冲突检测方法。
28、第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的类冲突检测方法。
29、本申请中,获取当前加载项目的加载文件路径,基于所述加载文件路径进行初始化得到目标对象,并确定所述目标对象的启动方式;基于所述目标对象的启动方式将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中;遍历所述预设类集合,确定出所述预设类集合中的冲突类,并在所述当前加载项目的同级目录下新建冲突日志文件,以将所述冲突类的冲突信息打印至所述冲突日志文件,以及根据所述冲突日志文件生成对应的json文件;基于java代理将所述json文件读取到类加载工具的可读取目录下,通过类加载工具包中的html页面显示所述json文件对应的冲突信息。通过上述技术方案,本申请可以获取当前加载项目的加载文件路径后,进行初始化得到目标对象,并根据启动方式保存加载文件的类并确定出冲突类,在检测类加载的同时,检测出加载时的冲突类,记录冲突类的信息,且可以在html页面中直观展示,提高了对项目进行修改完善的效率,改善了用户体验。
1.一种类冲突检测方法,其特征在于,包括:
2.根据权利要求1所述的类冲突检测方法,其特征在于,所述获取当前加载项目的加载文件路径之前,还包括:
3.根据权利要求2所述的类冲突检测方法,其特征在于,所述基于所述目标对象的启动方式将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中,包括:
4.根据权利要求2所述的类冲突检测方法,其特征在于,所述基于所述目标对象的启动方式将所述加载文件路径和所述加载文件路径下的类保存至预设类集合中,包括:
5.根据权利要求1所述的类冲突检测方法,其特征在于,所述遍历所述预设类集合,确定出所述预设类集合中的冲突类,包括:
6.根据权利要求1所述的类冲突检测方法,其特征在于,所述根据所述冲突日志文件生成对应的json文件,包括:
7.根据权利要求1至6任一项所述的类冲突检测方法,其特征在于,所述通过类加载工具包中的html页面显示所述json文件对应的冲突信息,包括:
8.一种类冲突检测装置,其特征在于,包括:
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的类冲突检测方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的类冲突检测方法。