CN116501371A - 一种用于检测jar包冲突的方法和装置 - Google Patents

一种用于检测jar包冲突的方法和装置 Download PDF

Info

Publication number
CN116501371A
CN116501371A CN202310429922.3A CN202310429922A CN116501371A CN 116501371 A CN116501371 A CN 116501371A CN 202310429922 A CN202310429922 A CN 202310429922A CN 116501371 A CN116501371 A CN 116501371A
Authority
CN
China
Prior art keywords
jar packet
name
jar
path
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310429922.3A
Other languages
English (en)
Inventor
马宇超
郑志攀
李保仓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
CCB Finetech Co Ltd
Original Assignee
China Construction Bank Corp
CCB Finetech Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp, CCB Finetech Co Ltd filed Critical China Construction Bank Corp
Priority to CN202310429922.3A priority Critical patent/CN116501371A/zh
Publication of CN116501371A publication Critical patent/CN116501371A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提出的用于检测jar包冲突的方法、装置及电子设备中,涉及数据处理、金融科技、信息技术产业技术领域,该用于检测jar包冲突的方法包括:获取需要检测的目标应用存储jar包的第一路径,根据第一路径,获取目标应用的jar包存在依赖的第二路径,根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合,根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。由此,本公开提出了一种用于检测jar包冲突的方法,避免了出现选择错误的版本,导致虚拟机加载不到需要的类或者加载了错误的类的情况,确保了目标应用的正常使用。

Description

一种用于检测jar包冲突的方法和装置
技术领域
本公开涉及数据处理、金融科技、信息技术产业技术领域,尤其涉及一种用于检测jar包冲突的方法、装置和电子设备。
背景技术
目前,在软件应用项目的开发过程中,会涉及大量的class文件,为了便于存储和使用,通常采用Jar包的形式。Jar(Java Archive)包是java的一种压缩包,也可以认为是一系列class文件的集合,要在项目中使用某个Jar包时,需要在用于指定类加载路径的相关参数中设置该Jar包的路径。
其中,jar包冲突是指应用程序依赖的同一个jar包出现了多个版本,可能包括应用内部出现的jar冲突或者应用和中间件(如weblogic、tomcat等)出现的jar包冲突,此时若选择了错误的版本,可能会导致虚拟机(如JVM)加载不到需要的类或者加载了错误的类,从而引起应用无法启动或者应用功能出现异常。因此,需要在目标应用正式应用之前,检测该目标应用是否存在jar包冲突,以避免出现jar包冲突的情况。
发明内容
本公开提供一种用于检测jar包冲突的方法、装置和电子设备,以用于检测目标应用中是否存在jar包冲突。
根据本公开的第一方面,提供了一种用于检测jar包冲突的方法,所述方法,包括:
获取需要检测的目标应用存储jar包的第一路径;
根据所述第一路径,获取所述目标应用的jar包存在依赖的第二路径;
根据所述第一路径和所述第二路径下的所有jar包,得到用于检测的jar包集合;
根据所述jar包集合中每个jar包名称,确定所述需要检测的目标应用的jar包冲突检测结果。
根据本公开的第二方面,提供了一种用于检测jar包冲突的装置,所述装置,包括:
第一获取模块,用于获取需要检测的目标应用存储jar包的第一路径;
第二获取模块,用于根据所述第一路径,获取所述目标应用的jar包存在依赖的第二路径;
处理模块,用于根据所述第一路径和所述第二路径下的所有jar包,得到用于检测的jar包集合;
确定模块,用于根据所述jar包集合中每个jar包名称,确定所述需要检测的目标应用jar包的冲突检测结果。
根据本公开的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如上述第一方面实施例的用于检测jar包冲突的方法。
根据本公开的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由数据管理装置/电子设备/服务器的处理器执行时,使得数据管理装置/电子设备/服务器能够执行如上述第一方面实施例的用于检测jar包冲突的方法。
根据本公开的第五方面,提供一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如上述第一方面实施例的用于检测jar包冲突的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开提出的用于检测jar包冲突的方法、装置及电子设备中,获取需要检测的目标应用存储jar包的第一路径,根据第一路径,获取目标应用的jar包存在依赖的第二路径,根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合,根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。由此,本公开提出了一种用于检测jar包冲突的方法,具体可以通过目标应用存储jar包的第一路径和目标应用的jar包存在依赖的第二路径,得到用于检测的jar包集合,然后根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果,从而避免出现选择错误的版本,导致虚拟机加载不到需要的类或者加载了错误的类的情况,确保了目标应用的正常使用。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1为根据本公开一个实施例提供的用于检测jar包冲突的方法的流程示意图;
图2为根据本公开另一个实施例提供的用于检测jar包冲突的方法的流程示意图;
图3为根据本公开另一个实施例提供的用于检测jar包冲突的方法的流程示意图;
图4为根据本公开一个实施例提供的用于检测jar包冲突的装置的结构示意图;
图5为根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
需要说明的是,本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
下面参考附图描述本公开实施例的用于检测jar包冲突的方法及装置。
图1为根据本公开另一个实施例提供的用于检测jar包冲突的方法的流程示意图,如图1所示,可以包括:
步骤101、获取需要检测的目标应用存储jar包的第一路径。
本公开实施例中,目标应用可以为需要进行jar包冲突检测的应用。其中,本公开实施例中,可以通过页面获取用户输入的需要检测的目标应用存储jar包的第一路径。
以及,本公开实施例中,在获取上述第一路径后,会确定该第一路径是否存在,若确定该第一路径不存在,则输出提示信息路径不存在,并退出;若确定该第一路径存在,则继续后续步骤。
进一步地,本公开实施例中,在目标应用进行上线或应用之前,自动对该目标应用进行jar包冲突检测,以避免出现jar包冲突的情况。
步骤102、根据第一路径,获取目标应用的jar包存在依赖的第二路径。
本公开实施例中,获取第一路径之后,可以根据第一路径获取该目标应用对应的所有jar包,然后获取与目标应用对应的所有jar包存在依赖的第二路径。其中,本公开实施例中,上述第二路径可以为与目标应用存在依赖的至少一个中间件存放jar包的路径。
具体地,本公开实施例中,上述根据第一路径,获取目标应用的jar包存在依赖的第二路径的方法可以包括:根据第一路径,获取第一路径下的jar包目录,扫描jar包目录中各jar包的每个类,获取目标应用的jar包存在依赖的第二路径。关于这部分内容会在后续实施例中进行详细介绍。
步骤103、根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合。
其中,本公开实施例中,获取第一路经和第二路径之后,根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合的方法可以包括:将第一路径和第二路径下的所有jar包,作为检测该目标应用是否存在jar包冲突情况的jar包集合。
步骤104、根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。
其中,本公开实施例中,获取用于检测的jar包集合后,可以根据jar包集合中每个jar包名称,确定是否存在jar包冲突的情况,从而确定需要检测的目标应用的jar包冲突检测结果。
具体地,本公开实施例中,上述根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果的方法可以包括:根据jar包集合中每个jar包名称,确定是否需要提取jar包名称对应的版本名称,若确定需要提取jar包名称对应的版本名称,则利用预设规则提取jar包名称对应的版本名称,然后根据jar包集合中jar包名称对应的版本名称,得到jar包集合中各版本名称的版本数量,再依次遍历每个版本名称的版本数量,确定需要检测的目标应用的jar包冲突检测结果。关于这部分内容会在后续实施例中进行详细介绍。
本公开提出的用于检测jar包冲突的方法中,获取需要检测的目标应用存储jar包的第一路径,根据第一路径,获取目标应用的jar包存在依赖的第二路径,根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合,根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。由此,本公开提出了一种用于检测jar包冲突的方法,具体可以通过目标应用存储jar包的第一路径和目标应用的jar包存在依赖的第二路径,得到用于检测的jar包集合,然后根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果,从而避免出现选择错误的版本,导致虚拟机加载不到需要的类或者加载了错误的类的情况,确保了目标应用的正常使用。
图2为根据本公开另一个实施例提供的用于检测jar包冲突的方法的流程示意图,如图2所示,可以包括:
步骤201、获取需要检测的目标应用存储jar包的第一路径。
关于步骤201的相关介绍可以参考上述实施例中的详细介绍,本公开实施例在此不再赘述。
步骤202、根据第一路径,获取第一路径下的jar包目录。
步骤203、扫描jar包目录中各jar包的每个类,获取目标应用的jar包存在依赖的第二路径。
本公开实施例中,获取第一路径下的jar包目录后,可以依次扫描该jar包目标中各jar包的每个类,获取该每个类存在依赖的类对应的第二路径。其中,本公开实施例中,目标应用的jar包可能存在至少一个第二路径。
以及,本公开实施例中,通过上述步骤202~步骤203可以得到与上述目标应用对应的jar包存在依赖关系的第二路径,以使得后续可以通过与目标应用的jar包存在依赖关系的所有jar包,进行jar包冲突检测,从而使得冲突检测结果更加准确。
步骤204、根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合。
步骤205、根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。
本公开提出的用于检测jar包冲突的方法中,获取需要检测的目标应用存储jar包的第一路径,根据第一路径,获取目标应用的jar包存在依赖的第二路径,根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合,根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。由此,本公开提出了一种用于检测jar包冲突的方法,具体可以通过目标应用存储jar包的第一路径和目标应用的jar包存在依赖的第二路径,得到用于检测的jar包集合,然后根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果,从而避免出现选择错误的版本,导致虚拟机加载不到需要的类或者加载了错误的类的情况,确保了目标应用的正常使用。
图3为根据本公开另一个实施例提供的用于检测jar包冲突的方法的流程示意图,如图3所示,可以包括:
步骤301、获取需要检测的目标应用存储jar包的第一路径。
步骤302、根据第一路径,获取目标应用的jar包存在依赖的第二路径。
步骤303、根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合。
关于步骤301~步骤303的相关介绍可以参考上述实施例中的详细介绍,本公开实施例在此不再赘述。
步骤304、根据jar包集合中每个jar包名称,确定是否需要提取jar包名称对应的版本名称。
其中,本公开实施例中,jar包集合中可能存在jar包备份,该jar包备份不影响后续jar包冲突检测,由此,jar包备份不需要提取jar包名称对应的版本名称。基于此,获取jar包集合后,可以根据jar包集合中每个jar包名称,确定是否需要提取jar包名称对应的版本名称,以便后续根据jar包名称对应的版本名称进行jar包冲突检测。
具体地,本公开实施例中,根据jar包集合中每个jar包名称,确定是否需要提取jar包名称对应的版本名称的方法可以包括以下步骤:
步骤3041、确定jar包名称对应的后缀是否为预设后缀;
本公开实施例中,可以将jar包名称中最后的“.”字符后的字符串确定为该jar包名称的后缀。
步骤3042、若jar包名称对应的后缀为预设后缀,则确定需要提取jar包名称对应的版本名称。
其中,本公开实施例中,上述预设后缀可以为“jar”。
以及,本公开实施例中,若确定jar包名称对应的后缀为“jar”,说明该jar包需要进行jar包冲突检测,则确定需要提取jar包名称对应的版本名称,以便后续可以排除jar包名称中的干扰,通过提取到的版本名称进行jar包冲突检测;若确定jar包名称对应的后缀不为“jar”,说明该jar包可能为jar包备份,此时该jar包不需要进行jar包冲突检测,可以直接跳过不进行处理。
示例的,本公开实施例中,假设jar包名称为poi-3.8.jar.bak,则该jar包的后缀为“bak”,不是预设后缀“jar”,基于此确定该jar包名称对应的后缀不为预设后缀,则对该jar包直接跳过,不进行处理。
步骤305、若确定需要提取jar包名称对应的版本名称,则利用预设规则提取jar包名称对应的版本名称。
其中,本公开实施例中,jar包名称中可以会存在名称不同,但是对应的版本相同的情况。基于此,确定需要提取jar包名称对应的版本名称后,可以利用预设规则统一提取jar包名称对应的版本名称,以便后续直接利用jar包名称对应的版本名称进行jar包冲突检测。
具体地,本公开实施例中,上述利用预设规则提取jar包名称对应的版本名称的方法可以包括以下步骤:
步骤1、若jar包名称中不包括第一标识,则将jar包名称中第一预设标识前的字符串作为jar包名称对应的版本名称;
其中,本公开实施例中,上述第一标识可以为“-”,第一预设标识可以为“.jar”。
以及,本公开实施例中,若jar包名称中不包括“-”,则可以将jar包名称中“.jar”前的字符串作为jar包名称对应的版本名称。示例的,本公开实施例中,假设jar包名称为poi.jar,则该jar包名称对应的版本名称为poi。
步骤2、若jar包名称中包括第一标识且不包括第二标识,则将jar包名称中第二预设标识前的字符串作为jar包名称对应的版本名称;
其中,本公开实施例中,上述第二标识可以为数字组成的版本号,第二预设标识可以为“.”。
以及,本公开实施例中,若jar包名称中包括“-”且不包括第二标识,则可以将jar包名称中“.”前的字符串作为jar包名称对应的版本名称。示例的,本公开实施例中,假设jar包名称为poi-ooxml.jar,则该jar包名称对应的版本名称为poi-ooxml。
步骤3、若jar包名称中包括第一阈值的第一标识且包括第二标识,则将jar包名称中第一标识前的字符串作为jar包名称对应的版本名称;
其中,本公开实施例中,上述第一阈值可以为1。
以及,本公开实施例中,若jar包名称中包括1个的“-”且包括第二标识,则将jar包名称中“-”前的字符串作为jar包名称对应的版本名称。示例的,本公开实施例中,假设jar包名称为poi-3.8.jar,则该jar包名称对应的版本名称为poi。
步骤4、若jar包名称中包括多个第一标识且包括的第二标识在第一预设位置,则将jar包名称中处于第二预设位置的第一标识前的字符串作为jar包名称对应的版本名称;
其中,本公开实施例中,上述第一预设位置可以为jar包名称中后缀前字符串中的最右侧,上述第二预设位置可以为jar包名称中后缀前字符串中的最右侧的“-”。
以及,本公开实施例中,若jar包名称中包括多个“-”且包括的第二标识在预设位置,则将jar包名称中处于第二预设位置的第一标识前的字符串作为jar包名称对应的版本名称。示例的,假设jar包名称为poi-ooxml-3.8.jar,则该jar包名称对应的版本名称为poi-ooxml。
步骤5、若jar包名称中包括多个第一标识且包括的第二标识不在第一预设位置,则将jar包名称删除第三预设标识后,将第二预设标识前的字符串作为jar包名称对应的版本名称。
其中,本公开实施例中,上述第三预设标识可以为“-版本号-*”。
以及,本公开实施例中,若jar包名称中包括多个“-”且包括的第二标识不在第一预设位置,则将jar包名称删除“-版本号-*”后,将“.”前的字符串作为jar包名称对应的版本名称。示例的,假设jar包名称为poi-ooxml-3.8-RELEASE.jar,则该jar包名称对应的版本名称为poi-ooxml。
步骤306、根据jar包集合中jar包名称对应的版本名称,得到jar包集合中各版本名称的版本数量。
其中,本公开实施例中,通过上述步骤305获取jar包集合中jar包名称对应的版本名称之后,可以将同一版本名称对应的数量确定为该版本名称的版本数量。示例的,本公开实施例中,假设jar包集合中jar包名称为{poi-ooxml.jar,poi-3.8.jar,poi-ooxml-3.8.jar,poi-ooxml-3.8-RELEASE.jar},通过上述步骤305可以为得到对应的版本名称为{poi-ooxml,poi,poi-ooxml,poi-ooxml},基于此,jar包集合中版本名称为poi对应的版本数量为1,版本名称为poi-ooxml对应的版本数量为3。
以及,本公开实施例中,可以利用字典变量存储上述各版本名称的版本数量。示例的,假设字典类型变量为dict,则dict=([“poi”]=1;[“poi-ooxml”]=3)。
步骤307、依次遍历每个版本名称的版本数量,确定需要检测的目标应用的jar包冲突检测结果。
其中,本公开实施例中,获取jar包集合中各版本名称的版本数量后,可以通过依次遍历每个版本名称的版本数量,确定该目标应用对应的jar包集合中是否存在多版本的情况,从而确定需要检测的目标应用的jar包冲突检测结果。
具体地,本公开实施例中,上述依次遍历每个版本名称的版本数量,确定需要检测的目标应用的jar包冲突检测结果的方法可以包括以下步骤:
步骤3071、若存在版本名称的版本数量大于第二阈值,则确定需要检测的目标应用的jar包冲突检测结果为存在冲突,并将存在冲突的版本名称对应的jar包名称输出;
其中,本公开实施例中,上述第二阈值可以为1。
以及,本公开实施例中,依次遍历每个版本名称的版本数量,若存在版本名称的版本数量大于1,说明存在多个相同版本的jar包,基于此,后续可能会出现选择错误的版本,导致虚拟机加载不到需要的类或者加载了错误的类的情况,则确定需要检测的目标应用的jar包冲突检测结果为存在冲突,同时将存在冲突的版本名称对应的jar包名称输出,以便用户确定具体发生冲突的jar包名称和路径,及时进行调整。
需要说明的是,本公开实施例中,上述步骤3071判断出存在版本名称的版本数量大于1后,还会继续遍历剩余版本名称,直至所有版本名称均遍历完,以使得可以得到存在冲突的所有jar包。
步骤3072、若版本名称的版本数量均小于或等于第二阈值,则确定需要检测的目标应用的jar包冲突检测结果为不存在冲突。
其中,本公开实施例中,若版本名称的版本数量均小于或等于1,说明jar包集合中不存在多个相同版本的jar包,则确定需要检测的目标应用的jar包冲突检测结果为不存在冲突。
本公开提出的用于检测jar包冲突的方法中,获取需要检测的目标应用存储jar包的第一路径,根据第一路径,获取目标应用的jar包存在依赖的第二路径,根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合,根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。由此,本公开提出了一种用于检测jar包冲突的方法,具体可以通过目标应用存储jar包的第一路径和目标应用的jar包存在依赖的第二路径,得到用于检测的jar包集合,然后根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果,从而避免出现选择错误的版本,导致虚拟机加载不到需要的类或者加载了错误的类的情况,确保了目标应用的正常使用。
图4是根据一示例性实施例示出的一种用于检测jar包冲突的装置的框图。
如图4所示,该用于检测jar包冲突的装置400包括:第一获取模块401、第二获取模块402、处理模块403、确定模块404。
第一获取模块401,用于获取需要检测的目标应用存储jar包的第一路径;
第二获取模块402,用于根据第一路径,获取目标应用的jar包存在依赖的第二路径;
处理模块403,用于根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合;
确定模块404,用于根据jar包集合中每个jar包名称,确定需要检测的目标应用jar包的冲突检测结果。
本公开提出的用于检测jar包冲突的装置中,获取需要检测的目标应用存储jar包的第一路径,根据第一路径,获取目标应用的jar包存在依赖的第二路径,根据第一路径和第二路径下的所有jar包,得到用于检测的jar包集合,根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果。由此,本公开提出了一种用于检测jar包冲突的方法,具体可以通过目标应用存储jar包的第一路径和目标应用的jar包存在依赖的第二路径,得到用于检测的jar包集合,然后根据jar包集合中每个jar包名称,确定需要检测的目标应用的jar包冲突检测结果,从而避免出现选择错误的版本,导致虚拟机加载不到需要的类或者加载了错误的类的情况,确保了目标应用的正常使用。
其中,本公开的实施例中,上述第二获取模块402,具体用于:
根据第一路径,获取第一路径下的jar包目录;
扫描jar包目录中各jar包的每个类,获取目标应用的jar包存在依赖的第二路径。
可选的,本公开的实施例中,上述确定模块404,具体用于:
根据jar包集合中每个jar包名称,确定是否需要提取jar包名称对应的版本名称;
若确定需要提取jar包名称对应的版本名称,则利用预设规则提取jar包名称对应的版本名称;
根据jar包集合中jar包名称对应的版本名称,得到jar包集合中各版本名称的版本数量;
依次遍历每个版本名称的版本数量,确定需要检测的目标应用的jar包冲突检测结果。
可选的,本公开的实施例中,上述确定模块404,还用于:
确定jar包名称对应的后缀是否为预设后缀;
若jar包名称对应的后缀为预设后缀,则确定需要提取jar包名称对应的版本名称。
可选的,本公开的实施例中,上述确定模块404还用于:
若jar包名称中不包括第一标识,则将jar包名称中第一预设标识前的字符串作为jar包名称对应的版本名称;
若jar包名称中包括第一标识且不包括第二标识,则将jar包名称中第二预设标识前的字符串作为jar包名称对应的版本名称;
若jar包名称中包括第一阈值的第一标识且包括第二标识,则将jar包名称中第一标识前的字符串作为jar包名称对应的版本名称;
若jar包名称中包括多个第一标识且包括的第二标识在第一预设位置,则将jar包名称中处于第二预设位置的第一标识前的字符串作为jar包名称对应的版本名称;
若jar包名称中包括多个第一标识且包括的第二标识不在第一预设位置,则将jar包名称删除第三预设标识后,将第二预设标识前的字符串作为jar包名称对应的版本名称。
可选的,本公开的实施例中,上述确定模块404还用于:
若存在版本名称的版本数量大于第二阈值,则确定需要检测的目标应用的jar包冲突检测结果为存在冲突,并将存在冲突的版本名称对应的jar包名称输出;
若版本名称的版本数量均小于或等于第二阈值,则确定需要检测的目标应用的jar包冲突检测结果为不存在冲突。
图5是根据一示例性实施例示出的一种电子设备的框图。
如图5所示,上述电子设备500包括:
处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(I/O)的接口512,传感器组件514,以及通信组件516。
处理组件502通常控制电子设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在电子设备500的操作。这些数据的示例包括用于在电子设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为电子设备500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为电子设备500生成、管理和分配电力相关联的组件。
多媒体组件508包括在电子设备500和用户之间的提供一个输出接口的触控显示屏。在一些实施例中,触控显示屏可以包括液晶显示器(LCD)和触摸面板(TP)。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当电子设备500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当电子设备500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。
在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为电子设备500提供各个方面的状态评估。例如,传感器组件514可以检测到电子设备500的打开/关闭状态,组件的相对定位,例如组件为电子设备500的显示器和小键盘,传感器组件514还可以检测电子设备500或电子设备500一个组件的位置改变,用户与电子设备500接触的存在或不存在,电子设备500方位或加速/减速和电子设备500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于电子设备500和其他设备之间有线或无线方式的通信。电子设备500可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述数据预热缓存方法。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器504,上述指令可由电子设备500的处理器520执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
需要说明的是,本实施例的电子设备的实施过程和技术原理参见前述对本公开实施例的用于检测jar包冲突的方法。的解释说明,此处不再赘述。
为了实现上述实施例,本公开还提出一种计算机可读存储介质。
其中,该计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例第一方面的用于检测jar包冲突的方法。可选的,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
为了实现上述实施例,本公开还提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述实施例第一方面实施例的用于检测jar包冲突的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述实施例第一方面的用于检测jar包冲突的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种用于检测jar包冲突的方法,其特征在于,包括:
获取需要检测的目标应用存储jar包的第一路径;
根据所述第一路径,获取所述目标应用的jar包存在依赖的第二路径;
根据所述第一路径和所述第二路径下的所有jar包,得到用于检测的jar包集合;
根据所述jar包集合中每个jar包名称,确定所述需要检测的目标应用的jar包冲突检测结果。
2.如权利要求1中所述的方法,其特征在于,所述根据所述第一路径,获取所述目标应用的jar包存在依赖的第二路径,包括:
根据所述第一路径,获取所述第一路径下的jar包目录;
扫描所述jar包目录中各jar包的每个类,获取所述目标应用的jar包存在依赖的第二路径。
3.如权利要求1中所述的方法,其特征在于,所述根据所述jar包集合中每个jar包名称,确定所述需要检测的目标应用的jar包冲突检测结果,包括:
根据所述jar包集合中每个jar包名称,确定是否需要提取所述jar包名称对应的版本名称;
若确定需要提取所述jar包名称对应的版本名称,则所述利用预设规则提取所述jar包名称对应的版本名称;
根据所述jar包集合中jar包名称对应的版本名称,得到所述jar包集合中各版本名称的版本数量;
依次遍历每个版本名称的版本数量,确定所述需要检测的目标应用的jar包冲突检测结果。
4.如权利要求3中所述的方法,其特征在于,所述根据所述jar包集合中每个jar包名称,确定是否需要提取所述jar包名称对应的版本名称,包括:
确定所述jar包名称对应的后缀是否为预设后缀;
若所述jar包名称对应的后缀为预设后缀,则确定需要提取所述jar包名称对应的版本名称。
5.如权利要求3中所述的方法,其特征在于,所述利用预设规则提取所述jar包名称对应的版本名称,包括:
若所述jar包名称中不包括第一标识,则将所述jar包名称中第一预设标识前的字符串作为所述jar包名称对应的版本名称;
若所述jar包名称中包括第一标识且不包括第二标识,则将所述jar包名称中第二预设标识前的字符串作为所述jar包名称对应的版本名称;
若所述jar包名称中包括第一阈值的第一标识且包括第二标识,则将所述jar包名称中第一标识前的字符串作为所述jar包名称对应的版本名称;
若所述jar包名称中包括多个第一标识且包括的第二标识在第一预设位置,则将所述jar包名称中处于第二预设位置的第一标识前的字符串作为所述jar包名称对应的版本名称;
若所述jar包名称中包括多个第一标识且包括的第二标识不在第一预设位置,则将所述jar包名称删除第三预设标识后,将第二预设标识前的字符串作为所述jar包名称对应的版本名称。
6.如权利要求3中所述的方法,其特征在于,所述依次遍历每个版本名称的版本数量,确定所述需要检测的目标应用的jar包冲突检测结果,包括:
若存在版本名称的版本数量大于第二阈值,则确定所述需要检测的目标应用的jar包冲突检测结果为存在冲突,并将存在冲突的版本名称对应的jar包名称输出;
若版本名称的版本数量均小于或等于第二阈值,则确定所述需要检测的目标应用的jar包冲突检测结果为不存在冲突。
7.一种用于检测jar包冲突的装置,其特征在于,包括:
第一获取模块,用于获取需要检测的目标应用存储jar包的第一路径;
第二获取模块,用于根据所述第一路径,获取所述目标应用的jar包存在依赖的第二路径;
处理模块,根据所述第一路径和所述第二路径下的所有jar包,得到用于检测的jar包集合;
确定模块,用于根据所述jar包集合中每个jar包名称,确定所述需要检测的目标应用jar包的冲突检测结果。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-6中任一项所述的方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法。
CN202310429922.3A 2023-04-20 2023-04-20 一种用于检测jar包冲突的方法和装置 Pending CN116501371A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310429922.3A CN116501371A (zh) 2023-04-20 2023-04-20 一种用于检测jar包冲突的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310429922.3A CN116501371A (zh) 2023-04-20 2023-04-20 一种用于检测jar包冲突的方法和装置

Publications (1)

Publication Number Publication Date
CN116501371A true CN116501371A (zh) 2023-07-28

Family

ID=87327810

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310429922.3A Pending CN116501371A (zh) 2023-04-20 2023-04-20 一种用于检测jar包冲突的方法和装置

Country Status (1)

Country Link
CN (1) CN116501371A (zh)

Similar Documents

Publication Publication Date Title
CN107357613B (zh) 应用更新方法、装置及计算机可读存储介质
CN104462296B (zh) 文件的管理方法、装置及终端
CN105094904A (zh) 安装应用程序的方法及装置
CN116069612A (zh) 一种异常定位方法、装置和电子设备
CN108446226B (zh) 应用异常的处理方法
CN107463419B (zh) 应用重启方法、装置及计算机可读存储介质
CN107239307B (zh) 版本更新信息的显示方法及装置
CN110221813B (zh) 应用的数据连接建立方法、装置、存储介质和电子设备
CN107122174B (zh) 应用程序更新方法及装置
CN112631695B (zh) 一种数据校验方法、装置、电子设备及存储介质
CN116501371A (zh) 一种用于检测jar包冲突的方法和装置
CN115729609A (zh) 配置库信息规范性检查方法、装置、设备及存储介质
CN113467854B (zh) 应用程序启动方法、装置、电子设备及存储介质
CN111241134B (zh) 一种数据处理方法及装置
CN107463414B (zh) 应用安装方法及装置
CN110928595B (zh) 一种权限操作方法及装置
CN107526683B (zh) 应用程序功能冗余度的检测方法、装置及存储介质
CN107193622B (zh) 代码编译的处理方法、装置及终端
CN110659081B (zh) 用于程序对象的文件处理方法、装置及电子设备
CN110659253A (zh) 文件打包方法、装置、电子设备及介质
CN113778385B (zh) 组件注册方法、装置、终端及存储介质
CN114020504B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN110990073B (zh) 一种验证应用程序的定制需求的方法及装置
CN115629772B (zh) Kubernetes软件安装方法及装置、电子设备
WO2023245344A1 (zh) 一种应用程序处理方法、装置、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination