CN113971031A - 软件包依赖关系检查方法及装置 - Google Patents
软件包依赖关系检查方法及装置 Download PDFInfo
- Publication number
- CN113971031A CN113971031A CN202111266507.8A CN202111266507A CN113971031A CN 113971031 A CN113971031 A CN 113971031A CN 202111266507 A CN202111266507 A CN 202111266507A CN 113971031 A CN113971031 A CN 113971031A
- Authority
- CN
- China
- Prior art keywords
- software package
- child node
- class
- dependency
- software
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 16
- 238000007689 inspection Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件包依赖关系检查方法及装置,涉及大数据技术领域,该方法包括:对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;针对软件包依赖关系树中每一存在父节点的子节点:以类加载器体系,加载父节点对应软件包中的第一类文件;以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。本发明可提升软件包依赖关系检查的准确率。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及软件包依赖关系检查方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
一般来说,软件包(Jar包)是其他人或组织已经写好的一些类文件,然后将这些类文件进行打包。用户可以将这些Jar包引入对应的项目中,然后就可以直接使用这些Jar包中的类和属性以及方法。而软件包依赖是java项目开发过程中的必需品,当用户的项目中需要用到一些功能时,就会考虑去引用提供这些功能和能力的Jar包。
而Jar包的使用,一般采用人工部署,但因人为部署易出现错漏不当,常会引起生产环境缺少jar包或jar包有误的问题发生。
目前,一般借助maven(软件项目管理工具),对人工部署的软件包,以及软件包间的依赖关系进行检查,但maven仅仅能检查Jar包的静态依赖问题。参见图1,在将Java程序部署至中间件时,程序一般会与中间件特殊的类加载机制产生关系。如果软件包的部署不当(例如:将oracle驱动包放在了中间件某一个lib目录);之后在Java程序的运行过程中,往往会出现找不到该语言包的情况,在驱动jar包的时则会出现严重失误,仅凭maven工具难以排查出上述问题,会严重影响Java程序的正常运行。
发明内容
本发明实施例提供一种软件包依赖关系检查方法,用以提升软件包依赖关系检查的准确率,该方法包括:
对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;
针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
本发明实施例还提供一种软件包依赖关系检查装置,用以提升软件包依赖关系检查的准确率,该装置包括:
软件包依赖关系树建立模块,用于对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;
子节点遍历模块,用于针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述软件包依赖关系检查方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述软件包依赖关系检查方法的计算机程序。
本发明实施例中,对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;针对软件包依赖关系树中每一存在父节点的子节点:以类加载器体系,加载父节点对应软件包中的第一类文件;以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息,与现有技术中借助maven工具实现软件包依赖关系检查的技术方案相比,通过建立软件包依赖关系树,以及检查软件包依赖关系树中节点的类文件,可有效实现对软件包依赖关系的检查,解决了现有技术下通过maven不能精准排查出软件包出现错误的问题,提升了软件包依赖关系检查的准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中一种现有技术下检查软件包依赖关系方法的流程示意图;
图2为本发明实施例中一种软件包依赖关系检查方法的流程示例图;
图3为本发明实施例中一种软件包依赖关系检查方法的具体示例图;
图4为本发明实施例中一种软件包依赖关系检查方法的具体示例图;
图5为本发明实施例中一种软件包依赖关系检查方法的具体示例图;
图6为本发明实施例中一种软件包依赖关系检查装置的结构示意图;
图7为本发明实施例中一种软件包依赖关系检查装置的具体示例图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例涉及下列名词,如下进行解释:
1)类加载器,classloader,jvm中加载class文件的加载器。
2)类加载体系,类加载体系是指多个类加载体系组成的体系,例如:链表结构,树状机构,图状结构;
3)双亲委派机制,jdk的类加载体系运行的机制为双亲委派。其他的中间件,如tomcat和websphere有自己的类加载机制;JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。
4)包依赖,包之间的依赖关系,简单些的如a包依赖b包,复杂一些的表现为链条状(a->b->c)或树状(a->b->c;a->e->f)。这里的包依赖并非指maven那种静态的依赖,而是特指在类加载体系中的依赖。
当前管理软件包之间复杂依赖关系的工具或方法从用途上来说主要分为两种:基于客户端的包依赖管理工具和基于分发端的包依赖管理工具
一般来说,软件包(Jar包)是其他人或组织已经写好的一些类文件,然后将这些类文件进行打包。用户可以将这些Jar包引入对应的项目中,然后就可以直接使用这些Jar包中的类和属性以及方法。而软件包依赖是java项目开发过程中的必需品,当用户的项目中需要用到一些功能时,就会考虑去引用提供这些功能和能力的Jar包。
而Jar包的使用,一般采用人工部署,但因人为部署易出现错漏不当,常会引起生产环境缺少jar包或jar包有误的问题发生。
目前,一般借助maven(软件项目管理工具),对人工部署的软件包,以及软件包间的依赖关系进行检查,但maven仅仅能检查Jar包的静态依赖问题。一般借助maven(软件项目管理工具)对人工部署的软件包,以及软件包间的依赖关系进行检查。
参见图1,在将Java程序部署至中间件时,程序一般会与中间件特殊的类加载机制产生关系。如果软件包的部署不当(例如:将oracle驱动包放在了中间件某一个lib目录);之后在Java程序的运行过程中,往往会出现找不到该语言包的情况,在驱动jar包的时则会出现严重失误,仅凭maven工具难以排查出上述问题,会严重影响Java程序的正常运行。
除上述之外,一般借助的maven(软件项目管理工具),在应用系统启动后,还没有业务在上面跑的时候,不可提前探测包依赖的场景,不可提前避免程序运行错误,而容易造成业务来临时的问题突然爆发,尤其是对有时间窗口限制的业务。
为了解决上述问题,本发明实施例提供一种软件包依赖关系检查方法,用以提升软件包依赖关系检查的准确率,如图2所示,该方法包括:
步骤201:对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;
步骤202:针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
本发明实施例中,对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;针对软件包依赖关系树中每一存在父节点的子节点:以类加载器体系,加载父节点对应软件包中的第一类文件;以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息,与现有技术中借助maven工具实现软件包依赖关系检查的技术方案相比,通过建立软件包依赖关系树,以及检查软件包依赖关系树中节点的类文件,可有效实现对软件包依赖关系的检查,解决了现有技术下通过maven不能精准排查出软件包出现错误的问题,提升了软件包依赖关系检查的准确率。
具体实施时,首先对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系。
实施例中,软件包依赖配置文件可由相关工作人员根据经验进行配置和调整,例如首先需要将依赖关系配置文件完成(如假设a.jar包里的A类文件,依赖b.jar包里的B类文件)。
具体实施时,在对软件包依赖配置文件进行解析,建立软件包依赖关系树后,针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
举一实例,以类加载器体系,加载父节点对应软件包中的第一类文件,可以包括:以类加载器体系中的appcl类加载器,去加载父节点对应软件包(a.jar包)中的第一类文件,如A类文件,而实际第一类文件的类加载器为maincl类加载器;之后,以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件,可以包括:以maincl类加载器,去加载子节点对应软件包中的第二类文件,如B类文件。
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息,例如发生:ClassNotFound或NoClassDefineError的执行通知,则确定该子节点对应软件包(b.jar包)中类文件缺失,缺失类型为缺少该软件包中不含该类文件、或该软件包不存在,则可确定b.jar包缺失。
以上述实施例对比现有技术,现有技术下maven的管理的是程序运行之前的包管理;而本发明实施例则是在运行阶段,结合中间件特定的类加载体制下的包依赖检测,两者准确来说并不相同,前者属于“静态”包检测,后者为“动态”包检查,采用的技术原理有本质的区别。
具体实施时,本发明实施例提供的一种软件包依赖关系检查方法,还可以包括:若加载出子节点对应软件包中的第二类文件,则确定该子节点对应软件包中类文件无误,并发出该子节点对应的软件包检查通过的通知信息。
实施例中,本发明实施例提供的一种软件包依赖关系检查方法,还可以包括:
针对软件包依赖关系树中每一存在父节点的子节点:
对该子节点对应的软件包、该父节点对应的软件包、和该子节点对应软件包的检查通过与否的检查结果,进行记录。
在上述实施例中,通过生成记录文件,可辅助管理人员对上述过程进行随时地调取阅读,有助于管理人员发现上述过程中的漏洞和弊端;同时,工作人员也可通过对记录文件进行调取阅读,实现对上述过程中的数据进行追溯,有助于验证数据的真实性的准确性,提升了上述过程的准确度。
具体实施时,本发明实施例提供的一种软件包依赖关系检查方法,还可以包括:针对每一检查未通过的软件包对应的子节点:
以更新后的软件包,替换初始软件包;
重新以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应的更新后软件包中的第二类文件;
若加载出子节点对应的更新后软件包中的第二类文件,则确定该子节点对应的更新后的软件包中类文件无误,并发出该子节点对应的软件包替换成功的通知信息。
实施例中,可通过重新以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应的更新后软件包中的第二类文件,并在加载出子节点对应的更新后软件包中的第二类文件时,则确定该子节点对应的更新后的软件包中类文件无误,并发出该子节点对应的软件包替换成功的通知信息,由此可以实现对更新的软件包的核验。
下面结合一具体示例,并结合图3和图4,来详细说明本发明实施例提供的方法:
一、获取软件包依赖配置文件。
以图3为例,1)首先需明确包依赖关系,包依赖关系可以抽象多个树状结构;然后系统启动后,解析依赖关系,然后循环检测依赖关系,最后给出报告。
2)该发明实施例也支持依赖的即席检测,即不用预先配置依赖关系,在系统运行过程中由用户(一般为开发人员)发起的临时的依赖检测。
参见表1,是设置包依赖配置文件的伪代码。设置包依赖的设置关系,逻辑上是一颗或多颗树关系,配置内容示例如下:
表1
二、参见图4,建立软件包依赖关系树,即读入依赖配置xml文件,经过解析后,形成依赖树对象。
参见图5,上述包依赖关系可以抽象为树结构,依赖配置由一颗到多颗这样的树结构组成。检测时从树的跟节点出发,采用深度遍历的方法,一个一个去检测。
三、循环遍历每一子节点对应的软件包,即依赖检测模块,循环依赖树,逐个检查各节点的依赖情况。
针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
上述过程的运行基础为包依赖检测核心逻辑,其通过应用的类加载器(例如appcl)加载A类,再获得实际加载A类的类加载器(例如maincl),然后再用maincl去加载B类,如果发生ClassNotFound或NoClassDefineError,则表示b.jar包缺失。
实现上述过程的伪代码如表2所示。
表2
四、生成子节点的检测结果报告,即结果模块将结果写入文件或存入数据库。
针对软件包依赖关系树中每一存在父节点的子节点:
对该子节点对应的软件包、该父节点对应的软件包、和该子节点对应软件包的检查通过与否的检查结果,进行记录,如拆分成了两两相连的依赖结果列表,如表3所示。
表3
引导包 | 被依赖包 | 检测结果 |
A | E | 成功 |
C | E | 成功 |
E | G | 成功 |
E | W | 成功 |
C | F | 失败 |
当然,可以理解的是,上述详细流程还可以有其他变化例,相关变化例均应落入本发明的保护范围。
本发明实施例中,对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;针对软件包依赖关系树中每一存在父节点的子节点:以类加载器体系,加载父节点对应软件包中的第一类文件;以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息,与现有技术中借助maven工具实现软件包依赖关系检查的技术方案相比,通过建立软件包依赖关系树,以及检查软件包依赖关系树中节点的类文件,可有效实现对软件包依赖关系的检查,解决了现有技术下通过maven不能精准排查出软件包出现错误的问题,提升了软件包依赖关系检查的准确率。
如上述,本发明通过技术手段规避了因人为部署的不当,而导致的生产环境缺少jar包问题或故障。将常用的包依赖问题(oracle的语言包,rocketmq包等),固化成专门的xml文件,并且在系统启动后对外营业之前,自动执行包依赖检测,并生成检测结果。避免了缺包(部署)导致的系统严重问题。尤其是这类问题不打印警告信息,不抛异常的情况下,该问题排查起来异常困难。本发明进一步加固了系统的生产安全。
本发明实施例中还提供了一种软件包依赖关系检查装置,如下面的实施例所述。由于该装置解决问题的原理与软件包依赖关系检查方法相似,因此该装置的实施可以参见软件包依赖关系检查方法的实施,重复之处不再赘述。
本发明实施例还提供一种软件包依赖关系检查装置,用以提升软件包依赖关系检查的准确率,如图6所示,该装置包括:
软件包依赖关系树建立模块601,用于对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;
子节点遍历模块602,用于针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
在一个实施例中,还可以包括:
第二类文件加载模块,用于若加载出子节点对应软件包中的第二类文件,则确定该子节点对应软件包中类文件无误,并发出该子节点对应的软件包检查通过的通知信息。
在一个实施例中,还可以包括:
记录模块,用于针对软件包依赖关系树中每一存在父节点的子节点:
对该子节点对应的软件包、该父节点对应的软件包、和该子节点对应软件包的检查通过与否的检查结果,进行记录。
在一个实施例中,还可以包括:
软件包替换模块,用于针对每一检查未通过的软件包对应的子节点:
以更新后的软件包,替换初始软件包;
重新以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应的更新后软件包中的第二类文件;
若加载出子节点对应的更新后软件包中的第二类文件,则确定该子节点对应的更新后的软件包中类文件无误,并发出该子节点对应的软件包替换成功的通知信息。
下面给出一个具体实施例,来说明本发明的装置的具体应用,如图7所示,该实施例,可以包括:
依赖关系配置模块:设置包依赖的设置关系,逻辑上是一颗或多颗树关系;
包检测模块:接收配置模块的xml文件,解析并进行检测,最后将结果写入检测结果模块;
检测结果模块:检测结果可以落地为文件,也可以写入数据库等,可以自行扩展。
当然,可以理解的是,上述详细流程还可以有其他变化例,相关变化例均应落入本发明的保护范围。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述软件包依赖关系检查方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述软件包依赖关系检查方法的计算机程序。
本发明实施例中,对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;针对软件包依赖关系树中每一存在父节点的子节点:以类加载器体系,加载父节点对应软件包中的第一类文件;以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息,与现有技术中借助maven工具实现软件包依赖关系检查的技术方案相比,通过建立软件包依赖关系树,以及检查软件包依赖关系树中节点的类文件,可有效实现对软件包依赖关系的检查,解决了现有技术下通过maven不能精准排查出软件包出现错误的问题,提升了软件包依赖关系检查的准确率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种软件包依赖关系检查方法,其特征在于,包括:
对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;
针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
2.如权利要求1所述的方法,其特征在于,还包括:
若加载出子节点对应软件包中的第二类文件,则确定该子节点对应软件包中类文件无误,并发出该子节点对应的软件包检查通过的通知信息。
3.如权利要求2所述的方法,其特征在于,还包括:
针对软件包依赖关系树中每一存在父节点的子节点:
对该子节点对应的软件包、该父节点对应的软件包、和该子节点对应软件包的检查通过与否的检查结果,进行记录。
4.如权利要求1所述的方法,其特征在于,还包括:
针对每一检查未通过的软件包对应的子节点:
以更新后的软件包,替换初始软件包;
重新以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应的更新后软件包中的第二类文件;
若加载出子节点对应的更新后软件包中的第二类文件,则确定该子节点对应的更新后的软件包中类文件无误,并发出该子节点对应的软件包替换成功的通知信息。
5.一种软件包依赖关系检查装置,其特征在于,包括:
软件包依赖关系树建立模块,用于对软件包依赖配置文件进行解析,建立软件包依赖关系树;所述软件包依赖配置文件用于描述不同软件包之间的依赖关系;所述软件包依赖关系树以软件包为节点、以软件包间的依赖关系为节点间的连接关系;
子节点遍历模块,用于针对软件包依赖关系树中每一存在父节点的子节点:
以类加载器体系,加载父节点对应软件包中的第一类文件;
以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应软件包中的第二类文件;
若无法加载所述第二类文件,则确定该子节点对应软件包中类文件缺失,并发出该子节点对应的软件包检查未通过的告警信息。
6.如权利要求5所述的装置,其特征在于,还包括:
第二类文件加载模块,用于若加载出子节点对应软件包中的第二类文件,则确定该子节点对应软件包中类文件无误,并发出该子节点对应的软件包检查通过的通知信息。
7.如权利要求6所述的装置,其特征在于,还包括:
记录模块,用于针对软件包依赖关系树中每一存在父节点的子节点:
对该子节点对应的软件包、该父节点对应的软件包、和该子节点对应软件包的检查通过与否的检查结果,进行记录。
8.如权利要求5所述的装置,其特征在于,还包括:
软件包替换模块,用于针对每一检查未通过的软件包对应的子节点:
以更新后的软件包,替换初始软件包;
重新以类加载器体系中加载所述第一类文件的类加载器,加载子节点对应的更新后软件包中的第二类文件;
若加载出子节点对应的更新后软件包中的第二类文件,则确定该子节点对应的更新后的软件包中类文件无误,并发出该子节点对应的软件包替换成功的通知信息。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至4任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111266507.8A CN113971031A (zh) | 2021-10-28 | 2021-10-28 | 软件包依赖关系检查方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111266507.8A CN113971031A (zh) | 2021-10-28 | 2021-10-28 | 软件包依赖关系检查方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113971031A true CN113971031A (zh) | 2022-01-25 |
Family
ID=79588881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111266507.8A Pending CN113971031A (zh) | 2021-10-28 | 2021-10-28 | 软件包依赖关系检查方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113971031A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115016832A (zh) * | 2022-08-08 | 2022-09-06 | 北京安普诺信息技术有限公司 | 一种深度分析软件组件依赖关系的方法及相关装置、平台 |
CN115359299A (zh) * | 2022-08-25 | 2022-11-18 | 上海人工智能创新中心 | 一种图像目标检测方法、装置及设备 |
CN116541307A (zh) * | 2023-06-29 | 2023-08-04 | 云筑信息科技(成都)有限公司 | 一种对比pom版本的数据处理方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073583A (zh) * | 2010-07-30 | 2011-05-25 | 兰雨晴 | 基于依赖的软件包依赖关系检查方法 |
CN102141919A (zh) * | 2010-01-28 | 2011-08-03 | 北京邮电大学 | 模块化java应用软件在线更新系统及方法 |
CN102880466A (zh) * | 2012-09-04 | 2013-01-16 | 中标软件有限公司 | 一种Linux操作系统软件包依赖关系检测方法 |
CN102985907A (zh) * | 2010-05-10 | 2013-03-20 | 泰必高软件公司 | 在动态类加载器环境下管理遗留软件的静态数据结构 |
CN108628751A (zh) * | 2018-05-17 | 2018-10-09 | 北京三快在线科技有限公司 | 一种无用依赖项检测方法及装置 |
CN109063468A (zh) * | 2018-06-14 | 2018-12-21 | 珠海金山网络游戏科技有限公司 | 一种安装包完整性验证及修复的方法 |
CN109189469A (zh) * | 2018-06-22 | 2019-01-11 | 北京大学 | 基于反射的安卓应用微服务化方法及系统 |
CN109460236A (zh) * | 2018-10-19 | 2019-03-12 | 中国银行股份有限公司 | 程序版本构建和检查方法及系统 |
CN112380130A (zh) * | 2020-11-19 | 2021-02-19 | 康键信息技术(深圳)有限公司 | 基于调用依赖关系的应用测试方法和装置 |
CN112416421A (zh) * | 2020-11-17 | 2021-02-26 | 用友网络科技股份有限公司 | 软件依赖关系分析方法、分析装置和可读存储介质 |
CN112559073A (zh) * | 2020-12-16 | 2021-03-26 | 北京百度网讯科技有限公司 | 程序启动方法、类间关系构建方法及装置、移动终端 |
-
2021
- 2021-10-28 CN CN202111266507.8A patent/CN113971031A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141919A (zh) * | 2010-01-28 | 2011-08-03 | 北京邮电大学 | 模块化java应用软件在线更新系统及方法 |
CN102985907A (zh) * | 2010-05-10 | 2013-03-20 | 泰必高软件公司 | 在动态类加载器环境下管理遗留软件的静态数据结构 |
CN102073583A (zh) * | 2010-07-30 | 2011-05-25 | 兰雨晴 | 基于依赖的软件包依赖关系检查方法 |
CN102880466A (zh) * | 2012-09-04 | 2013-01-16 | 中标软件有限公司 | 一种Linux操作系统软件包依赖关系检测方法 |
CN108628751A (zh) * | 2018-05-17 | 2018-10-09 | 北京三快在线科技有限公司 | 一种无用依赖项检测方法及装置 |
CN109063468A (zh) * | 2018-06-14 | 2018-12-21 | 珠海金山网络游戏科技有限公司 | 一种安装包完整性验证及修复的方法 |
CN109189469A (zh) * | 2018-06-22 | 2019-01-11 | 北京大学 | 基于反射的安卓应用微服务化方法及系统 |
CN109460236A (zh) * | 2018-10-19 | 2019-03-12 | 中国银行股份有限公司 | 程序版本构建和检查方法及系统 |
CN112416421A (zh) * | 2020-11-17 | 2021-02-26 | 用友网络科技股份有限公司 | 软件依赖关系分析方法、分析装置和可读存储介质 |
CN112380130A (zh) * | 2020-11-19 | 2021-02-19 | 康键信息技术(深圳)有限公司 | 基于调用依赖关系的应用测试方法和装置 |
CN112559073A (zh) * | 2020-12-16 | 2021-03-26 | 北京百度网讯科技有限公司 | 程序启动方法、类间关系构建方法及装置、移动终端 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115016832A (zh) * | 2022-08-08 | 2022-09-06 | 北京安普诺信息技术有限公司 | 一种深度分析软件组件依赖关系的方法及相关装置、平台 |
CN115016832B (zh) * | 2022-08-08 | 2022-11-29 | 北京安普诺信息技术有限公司 | 一种深度分析软件组件依赖关系的方法及相关装置、平台 |
CN115359299A (zh) * | 2022-08-25 | 2022-11-18 | 上海人工智能创新中心 | 一种图像目标检测方法、装置及设备 |
CN116541307A (zh) * | 2023-06-29 | 2023-08-04 | 云筑信息科技(成都)有限公司 | 一种对比pom版本的数据处理方法 |
CN116541307B (zh) * | 2023-06-29 | 2023-10-20 | 云筑信息科技(成都)有限公司 | 一种对比pom版本的数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113971031A (zh) | 软件包依赖关系检查方法及装置 | |
US8245194B2 (en) | Automatically generating unit test cases which can reproduce runtime problems | |
US8359581B2 (en) | Automatic collection of diagnostic traces in an automation framework | |
Mariani et al. | Dynamic detection of cots component incompatibility | |
US20120159443A1 (en) | System and method for reducing test effort by object risk analysis | |
US8832125B2 (en) | Extensible event-driven log analysis framework | |
US20110107307A1 (en) | Collecting Program Runtime Information | |
US7284237B2 (en) | Testing flow control at test assertion level | |
US20080313602A1 (en) | Bounded program failure analysis and correction | |
WO2007005123A2 (en) | Automated test case result analyzer | |
KR101579493B1 (ko) | 소스코드 이관제어 방법 및 이를 위한 컴퓨터 프로그램, 그 기록매체 | |
US20090193397A1 (en) | Method and apparatus for facilitating diagnostic logging for software components | |
CN112241360A (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN112965913B (zh) | 一种Java软件依赖冲突问题自动化修复的方法 | |
US20190114246A1 (en) | Method for replicating production behaviours in a development environment | |
US20200133823A1 (en) | Identifying known defects from graph representations of error messages | |
JP2015011372A (ja) | デバッグ支援システム、方法、プログラム及び記録媒体 | |
CN112835924A (zh) | 实时计算任务处理方法、装置、设备及存储介质 | |
US20100031237A1 (en) | Methods for Detecting Inter-Module Dependencies | |
US9779014B2 (en) | Resilient mock object creation for unit testing | |
US8244869B2 (en) | System and method for starting server services | |
CN111897789B (zh) | 一种日志生成方法及装置 | |
CN111258562A (zh) | Java代码质量检查方法、装置、设备和存储介质 | |
CN114500249B (zh) | 一种根因定位方法和装置 | |
CN112596750B (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 |