本发明涉及计算机技术领域,具体涉及一种jar包冲突解决方法和装置。
背景技术:
jar包(javaarchivefile),是java档案文件,其中压缩有若干应用程序所需要使用的类,能够被应用程序直接使用。在开发应用程序时,利用已有的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命令修改所述中间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包中各基础jar包的路径,得到结果jar包。该技术方案,将多个基础jar包解压合成一个中间jar包,使其中的基础jar包具有不同的依赖路径。修改中间jar包中的各基础jar包的路径,确保与冲突的目标jar包进一步区分,两者具有不同的路径。开发应用程序时,由于基础jar包的路径和依赖路径发生了改变,直接引用该结果jar包就不会出现引用错误,有效地避免了jar包冲突。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种jar包冲突解决方法的流程示意图;
图2示出了根据本发明一个实施例的一种jar包冲突解决装置的结构示意图;
图3示出了根据本发明一个实施例的电子设备的结构示意图;
图4示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种jar包冲突解决方法的流程示意图。如图1所示,该方法包括:
步骤s110,获取具有依赖关系的多个基础jar包,其中,存在至少一个基础jar包与目标jar包冲突。
基础jar包是应用程序开发时采用的jar包,其中的依赖关系是指各个基础jar包之间具有调用关系,也叫作内联。例如第一jar包在运行时,第一jar包中的类m需要调用第二jar包中的类n的n方法。存在至少一个基础jar包与目标类冲突,也就是存在至少一个基础jar包的名称与目标jar包的名称相同。例如,开发者在应用开发过程中生成一个目标jar包,该目标jar包命名为a.jar,该开发者又希望使用其他开发者提供的sdk,sdk中包含的一个基础jar包也命名为a.jar,这样在后续引用中就会产生jar包冲突。
步骤s120,对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包。
多个基础jar包之间具有依赖关系,将该多个基础jar包合成一个中间jar包,使其中与目标jar包冲突的基础jar包具有新的依赖传递路径。例如,目标jar包为a.jar,多个基础jar包中包括具有依赖关系的a.jar和b.jar,其中
a.jar与目标jar包冲突,将a.jar和b.jar解压后合成一个c.jar,则该a.jar的依赖传递路径为从中间jar包c.jar中进行传递,与目标jar包的依赖传递路径进行区别。
步骤s130,修改中间jar包中各基础jar包的路径,得到结果jar包。
生成中间jar包后,虽然a.jar的依赖传递路径发生了变化,但是其自身的路径仍没有发生变化,也就是a.jar仍然具有与目标jar包采用相同的名称,jar包的名称即为路径。因此需要相应的修改各基础jar包的路径,使其与目标jar包进行区分,即修改内联引用。例如,a.jar和b.jar解压合成一个c.jar后,修改a.jar的路径为qihoo.a.jar,与目标jar包进行区分。在需要引用基础jar包a.jar时,从路径c.jar中引用qihoo.a.jar,就不会与目标jar包发生冲突。
当存在两个或两个以上的基础jar包与多个目标jar包发生冲突,逐一修改其中发生冲突的基础jar的路径包较为困难。因此,直接将中间jar包中各基础jar包的路径均进行修改,可以有效解决多个基础jar包与多个目标jar包发生冲突的问题。例如,将b.jar也修改为qihoo.b.jar,可以有效解决基础jar包a.jar和b.jar与目标jar包a.jar和b.jar发生冲突的问题。
另一方面,由于各基础jar包之间存在依赖关系,基础jar包a.jar的路径修改后,相应地需要修改其余基础jar包的依赖关系,以保持基础jar包之间正确的依赖关系。例如,当基础jar包b.jar依赖基础jar包a.jar,则相应地需要修改为基础jar包b.jar依赖qihoo.a.jar。
本实施例中,通过获取具有依赖关系的多个基础jar包,其中,存在至少一个基础jar包与目标jar包冲突;对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包;修改中间jar包中各基础jar包的路径,得到结果jar包。该技术方案,将多个基础jar包解压合成一个中间jar包,使其中的基础jar包具有不同的依赖路径。修改中间jar包中的各基础jar包的路径,与冲突的目标jar包进一步区分,确保两者具有不同的路径。开发应用程序时,由于基础jar包的路径和依赖路径发生了改变,直接引用该结果jar包就不会出现引用错误,有效地避免了jar包冲突。
在本发明的一个实施例中,如图1所示的方法中,步骤s130中的修改中间jar包中各基础jar包的路径,得到结果jar包包括:根据依赖关系依次修改中间jar包中各基础jar包的路径,最终得到结果jar包。
本实施例提供了一个修改基础jar包的路径的具体方法。根据依赖关系依次修改中间jar包中各基础jar包的路径,也就是路径的修改按照一定的顺序进行,具有逻辑性,可以确保路径修改的正确性,避免发生遗漏。例如,中间jar包中存在第一jar包依赖第二jar包,修改路径时,可以根据依赖关系从前往后进行路径修改,如首先修改第一jar包的路径,再修改第二jar包的路径。
在本发明的一个实施例中,上述方法中,根据依赖关系依次修改中间jar包中各基础jar包的路径,最终得到结果jar包包括:当一个基础jar包依赖另一基础jar包时,先修改被依赖的基础jar包的路径。
例如,基础jar包中的a.jar和b.jar,a.jar依赖于b.jar。修改路径时,首先修改被依赖的b.jar的路径为qihoo.b.jar,然后再依次修改a.jar的路径为qihoo.a.jar。同时,还需要修改a.jar中的依赖关系,也就是将a.jar中依赖b.jar修改为依赖qihoo.b.jar。
当存在三个以上的基础jar包时,例如a.jar、b.jar和c.jar,a.jar依赖于b.jar,b.jar依赖于c.jar。那么首先修改c.jar的路径,然后再修改b.jar的路径,最后修改a.jar的路径。需要说明的是,当存在多个具有依赖关系的基础jar包时,也可以采用该方法修改各个基础jar包的路径,此处不再赘述。
各个基础jar包之间的所有依赖关系组成依赖树,先修改被依赖的基础jar包的路径,相当于从依赖树的树梢开始,沿着依赖树的依赖传递路径逐步进行修改,确保基础jar包的路径修改有条不紊,避免造成遗漏。
在本发明的一个实施例中,如图1所示的方法中,对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包包括:基于jar命令对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包。
jar命令是cmd命令的一种,可以对jar包、以及类文件执行相应的操作。例如,通过在cmd中输入对应的jar命令解压jar包或合成jar包。在本实施例中,首先采用jar命令中的解压jar命令,将多个基础jar包分别进行解压,解压后各个基础jar包中的类文件存储在相应地基础jar包文件夹中。然后再采用jar命令中的压缩jar命令,获取各个基础jar包文件夹中的类文件,将其合成一个中间jar包。
在本发明的一个实施例中,如图1所示的方法中,修改中间jar包中各基础jar包的路径,得到结果jar包包括:基于jar命令修改中间jar包中各基础jar包的路径,得到结果jar包。
jar命令中还包括修改路径的命令,采用该修改jar命令,实现基础jar包的路径修改。例如,将基础jar包中的a.jar修改为qihoo.a.jar。采用jar命令执行修改操作,简单便捷,可以提高工作效率。
图2示出了根据本发明的一个实施例的一种jar包冲突解决装置的结构示意图。如图2所示,该装置200包括:
基础jar包获取单元210,适于获取具有依赖关系的多个基础jar包,其中,存在至少一个基础jar包与目标jar包冲突。
基础jar包是应用程序开发时采用的jar包,其中的依赖关系是指各个基础jar包之间具有调用关系,也叫作内联。例如第一jar包在运行时,第一jar包中的类m需要调用第二jar包中的类n的n方法。存在至少一个基础jar包与目标类冲突,也就是存在至少一个基础jar包的名称与目标jar包的名称相同。例如,开发者在应用开发过程中生成一个目标jar包,该目标jar包命名为a.jar,该开发者又希望使用其他开发者提供的sdk,sdk中包含的一个基础jar包也命名为a.jar,这样在后续引用中就会产生jar包冲突。
中间jar包合成单元220,适于对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包。
多个基础jar包之间具有依赖关系,将该多个基础jar包合成一个中间jar包,使其中与目标jar包冲突的基础jar包具有新的依赖传递路径。例如,目标jar包为a.jar,多个基础jar包中包括具有依赖关系的a.jar和b.jar,其中
a.jar与目标jar包冲突,将a.jar和b.jar解压后合成一个c.jar,则该a.jar的依赖传递路径为从中间jar包c.jar中进行传递,与目标jar包的依赖传递路径进行区别。
结果jar包获取单元230,适于修改中间jar包中各基础jar包的路径,得到结果jar包。
生成中间jar包后,虽然a.jar的依赖传递路径发生了变化,但是其自身的路径仍没有发生变化,也就是a.jar仍然具有与目标jar包采用相同的名称,jar包的名称即为路径。因此需要相应的修改各基础jar包的路径,使其与目标jar包进行区分,即修改内联引用。例如,a.jar和b.jar解压合成一个c.jar后,修改a.jar的路径为qihoo.a.jar,与目标jar包进行区分。在需要引用基础jar包a.jar时,从路径c.jar中引用qihoo.a.jar,就不会与目标jar包发生冲突。
当存在两个或两个以上的基础jar包与多个目标jar包发生冲突,逐一修改其中发生冲突的基础jar的路径包较为困难。因此,直接将中间jar包中各基础jar包的路径均进行修改,可以有效解决多个基础jar包与多个目标jar包发生冲突的问题。例如,将b.jar也修改为qihoo.b.jar,可以有效解决基础jar包a.jar和b.jar与目标jar包a.jar和b.jar发生冲突的问题。
另一方面,由于各基础jar包之间存在依赖关系,基础jar包a.jar的路径修改后,相应地需要修改其余基础jar包的依赖关系,以保持基础jar包之间正确的依赖关系。例如,当基础jar包b.jar依赖基础jar包a.jar,则相应地需要修改为基础jar包b.jar依赖qihoo.a.jar。
本实施例中,通过获取具有依赖关系的多个基础jar包,其中,存在至少一个基础jar包与目标jar包冲突;对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包;修改中间jar包中各基础jar包的路径,得到结果jar包。该技术方案,将多个基础jar包解压合成一个中间jar包,使其中的基础jar包具有不同的依赖路径。修改中间jar包中的各基础jar包的路径,与冲突的目标jar包进一步区分,确保两者具有不同的路径。开发应用程序时,由于基础jar包的路径和依赖路径发生了改变,直接引用该结果jar包就不会出现引用错误,有效地避免了jar包冲突。
在本发明的一个实施例中,如图2所示的装置中,结果jar包获取单元230,进一步适于根据依赖关系依次修改中间jar包中各基础jar包的路径,最终得到结果jar包。
本实施例提供了一个修改基础jar包的路径的具体方法。根据依赖关系依次修改中间jar包中各基础jar包的路径,也就是路径的修改按照一定的顺序进行,具有逻辑性,可以确保路径修改的正确性,避免发生遗漏。例如,中间jar包中存在第一jar包依赖第二jar包,修改路径时,可以根据依赖关系从前往后进行路径修改,如首先修改第一jar包的路径,再修改第二jar包的路径。
更进一步地,结果jar包获取单元230,适于当一个基础jar包依赖另一基础jar包时,先修改被依赖的基础jar包的路径。
例如,基础jar包中的a.jar和b.jar,a.jar依赖于b.jar。修改路径时,首先修改被依赖的b.jar的路径为qihoo.b.jar,然后再依次修改a.jar的路径为qihoo.a.jar。同时,还需要修改a.jar中的依赖关系,也就是将a.jar中依赖b.jar修改为依赖qihoo.b.jar。
当存在三个以上的基础jar包时,例如a.jar、b.jar和c.jar,a.jar依赖于b.jar,b.jar依赖于c.jar。那么首先修改c.jar的路径,然后再修改b.jar的路径,最后修改a.jar的路径。需要说明的是,当存在多个具有依赖关系的基础jar包时,也可以采用该方法修改各个基础jar包的路径,此处不再赘述。
各个基础jar包之间的所有依赖关系组成依赖树,先修改被依赖的基础jar包的路径,相当于从依赖树的树梢开始,沿着依赖树的依赖传递路径逐步进行修改,确保基础jar包的路径修改有条不紊,避免造成遗漏。
在本发明的一个实施例中,如图2所示的装置中,中间jar包合成单元220,进一步适于基于jar命令对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包。
jar命令是cmd命令的一种,可以对jar包、以及类文件执行相应的操作。例如,通过在cmd中输入对应的jar命令解压jar包或合成jar包。在本实施例中,首先采用jar命令中的解压jar命令,将多个基础jar包分别进行解压,解压后各个基础jar包中的类文件存储在相应地基础jar包文件夹中。然后再采用jar命令中的压缩jar命令,获取各个基础jar包文件夹中的类文件,将其合成一个中间jar包。
在本发明的一个实施例中,如图2所示的装置中,结果jar包获取单元230,进一步适于基于jar命令修改中间jar包中各基础jar包的路径,得到结果jar包。
jar命令中还包括修改路径的命令,采用该修改jar命令,实现基础jar包的路径修改。例如,将基础jar包中的a.jar修改为qihoo.a.jar。采用jar命令执行修改操作,简单便捷,可以提高工作效率。
综上所述,本发明的技术方案,通过获取具有依赖关系的多个基础jar包,其中,存在至少一个基础jar包与目标jar包冲突;对多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包;修改中间jar包中各基础jar包的路径,得到结果jar包。该技术方案,将多个基础jar包解压合成一个中间jar包,使其中的基础jar包具有不同的依赖路径。修改中间jar包中的各基础jar包的路径,与冲突的目标jar包进一步区分,确保两者具有不同的路径。开发应用程序时,由于基础jar包的路径和依赖路径发生了改变,直接引用该结果jar包就不会出现引用错误,有效地避免了jar包冲突。需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的一种jar包冲突解决装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图3示出了根据本发明一个实施例的电子设备的结构示意图。该电子设备包括处理器310和被安排成存储计算机可执行指令(计算机可读程序代码)的存储器320。存储器320可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器320具有存储用于执行上述方法中的任何方法步骤的计算机可读程序代码331的存储空间330。例如,用于存储计算机可读程序代码的存储空间330可以包括分别用于实现上面的方法中的各种步骤的各个计算机可读程序代码331。计算机可读程序代码331可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图4所述的计算机可读存储介质。图4示出了根据本发明一个实施例的一种计算机可读存储介质的结构示意图。该计算机可读存储介质400存储有用于执行根据本发明的方法步骤的计算机可读程序代码331,可以被电子设备300的处理器310读取,当计算机可读程序代码331由电子设备300运行时,导致该电子设备300执行上面所描述的方法中的各个步骤,具体来说,该计算机可读存储介质存储的计算机可读程序代码331可以执行上述任一实施例中示出的方法。计算机可读程序代码331可以以适当形式进行压缩。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了a1、一种jar包冲突解决方法,包括:
获取具有依赖关系的多个基础jar包,其中,存在至少一个基础jar包与目标jar包冲突;
对所述多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包;
修改所述中间jar包中各基础jar包的路径,得到结果jar包。
a2、如a1所述的方法,其中,所述修改所述中间jar包中各基础jar包的路径,得到结果jar包包括:
根据所述依赖关系依次修改所述中间jar包中各基础jar包的路径,最终得到所述结果jar包。
a3、如a2所述的方法,其中,所述根据所述依赖关系依次修改所述中间jar包中各基础jar包的路径,最终得到所述结果jar包包括:
当一个基础jar包依赖另一基础jar包时,先修改被依赖的基础jar包的路径。
a4、如a1所述的方法,其中,所述对所述多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包包括:
基于jar命令对所述多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包。
a5、如a1所述的方法,其中,所述修改所述中间jar包中各基础jar包的路径,得到结果jar包包括:
基于jar命令修改所述中间jar包中各基础jar包的路径,得到结果jar包。
本发明还公开了b6、一种jar包冲突解决装置,包括:
基础jar包获取单元,适于获取具有依赖关系的多个基础jar包,其中,存在至少一个基础jar包中与目标jar包冲突;
中间jar包合成单元,适于对所述多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包;
结果jar包获取单元,适于修改所述中间jar包中各基础jar包的路径,得到结果jar包。
b7、如b6所述的装置,其中,
所述结果jar包获取单元,进一步适于根据所述依赖关系依次修改所述中间jar包中各基础jar包的路径,最终得到所述结果jar包。
b8、如b7所述的装置,其中,
所述结果jar包获取单元,进一步适于当一个基础jar包依赖另一基础jar包时,先修改被依赖的基础jar包的路径。
b9、如b6所述的装置,其中,
所述中间jar包合成单元,进一步适于基于jar命令对所述多个基础jar包分别进行解压,根据解压后的内容合成一个中间jar包。
b10、如b6所述的装置,其中,
所述结果jar包获取单元,进一步适于基于jar命令修改所述中间jar包中各基础jar包的路径,得到结果jar包。
本发明还公开了c11、一种电子设备,其中,该电子设备包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如a1-a5中任一项所述的方法。
本发明还公开了d12、一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如a1-a5中任一项所述的方法。