System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 命名空间类调用方法、装置、设备、存储介质和程序产品制造方法及图纸_技高网

命名空间类调用方法、装置、设备、存储介质和程序产品制造方法及图纸

技术编号:40075434 阅读:10 留言:0更新日期:2024-01-17 01:06
本申请涉及一种命名空间类调用方法、装置、计算机设备、存储介质和计算机程序产品,涉及计算机技术领域。本申请提出一种普适性较高的解决不同JAR中同命名空间冲突问题的方案,且该方案不依赖于第三方,可有效避免重复工作及多余人力的投入。该方法包括:将新建的自定义类加载器继承目标父类加载器;采用自定义类加载器在预设的存储路径上加载目标JAR包内类;将加载目标JAR包内类后的自定义类加载器设置为内核中的线程默认加载器;基于线程默认加载器进行目标JAR包内类的命名空间类调用。

【技术实现步骤摘要】

本申请涉及计算机,特别是涉及一种命名空间类调用方法、装置、计算机设备、存储介质和计算机程序产品。


技术介绍

1、随着计算机开源技术的发展,在外联系统中,经常会调用外联方提供的jar(javaarchive file,java的一种文档格式)包,此种情形下,会存在不同jar包中存在同命名空间jar的情况,且这些同命名空间的类实现方式不尽相同,不能很好地兼容。

2、传统技术中,通过配置文件pom(project object model,maven项目的核心文件之一)文件进行版本管理,多个开发者只需同步一个pom文件即可保证jar版本统一,可以减少因jar版本冲突导致的故障,增强应用可靠性。

3、然而,目前技术中的pom文件只能从jar包的层面进行管理,不同jar包内的冲突仍然无法解决,存在普适性较低的缺陷。


技术实现思路

1、基于此,有必要针对上述技术问题,提供一种命名空间类调用方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

2、第一方面,本申请提供了一种命名空间类调用方法。所述方法包括:

3、将新建的自定义类加载器继承目标父类加载器;

4、采用所述自定义类加载器在预设的存储路径上加载目标jar包内类;

5、将加载所述目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器;

6、基于所述线程默认加载器进行所述目标jar包内类的命名空间类调用。

7、在其中一个实施例中,所述将新建的自定义类加载器继承目标父类加载器,包括:

8、响应于对待调用类的调用请求,新建自定义类加载器;确定待继承的目标父类加载器;将所述自定义类加载器继承所述目标父类加载器。

9、在其中一个实施例中,在采用所述自定义类加载器在预设的存储路径上加载目标jar包内类之前,还包括:

10、获取所述目标jar包内类的定名信息;根据所述定名信息,确定所述目标jar包内类的预设加载模式。

11、在其中一个实施例中,所述根据所述定名信息,确定所述目标jar包内类的预设加载模式,包括:

12、基于所述目标jar包内类的定名信息,判断所述目标jar包内类的预设字段是否在预设集合中;其中,所述预设字段包括前缀开头预设数量的字段,所述预设集合包括多个从父类加载器加载的类的前缀开头的字段;若所述预设字段在预设集合中,则确定所述目标jar包内类的预设加载模式为调用父类加载器加载。

13、在其中一个实施例中,所述采用所述自定义类加载器在预设的存储路径上加载目标jar包内类,包括:

14、将所述自定义类加载器的加载路径设置为自定义的存储路径;将所述自定义类加载器进行实例化;设置实例化后的自定义类加载器的加载行为,以使所述自定义类加载器根据所述预设加载模式,加载在自定义的存储路径上保存的所述目标jar包内类。

15、在其中一个实施例中,所述将加载所述目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器,包括:

16、将加载所述目标jar包内类后的自定义类加载器设置为目标应用程序加载类的成员属性;将加载所述目标jar包内类后的自定义类加载器加载至内核中,替换内核中指定的已加载的类加载器,作为所述线程默认加载器。

17、在其中一个实施例中,所述方法还包括:

18、在所述目标jar包内类的命名空间类调用完成的情况下,生成所述目标jar包内类的当前调用记录;根据所述目标jar包内类的当前调用记录,对所述目标jar包内类的历史调用记录进行补充。

19、第二方面,本申请还提供了一种命名空间类调用装置。所述装置包括:

20、继承处理模块,用于将新建的自定义类加载器继承目标父类加载器;

21、信息加载模块,用于采用所述自定义类加载器在预设的存储路径上加载目标jar包内类;

22、内核设置模块,用于将加载所述目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器;

23、调用处理模块,用于基于所述线程默认加载器进行所述目标jar包内类的命名空间类调用。

24、第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

25、将新建的自定义类加载器继承目标父类加载器;采用所述自定义类加载器在预设的存储路径上加载目标jar包内类;将加载所述目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器;基于所述线程默认加载器进行所述目标jar包内类的命名空间类调用。

26、第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

27、将新建的自定义类加载器继承目标父类加载器;采用所述自定义类加载器在预设的存储路径上加载目标jar包内类;将加载所述目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器;基于所述线程默认加载器进行所述目标jar包内类的命名空间类调用。

28、第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

29、将新建的自定义类加载器继承目标父类加载器;采用所述自定义类加载器在预设的存储路径上加载目标jar包内类;将加载所述目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器;基于所述线程默认加载器进行所述目标jar包内类的命名空间类调用。

30、上述命名空间类调用方法、装置、计算机设备、存储介质和计算机程序产品,通过将新建的自定义类加载器继承目标父类加载器;采用自定义类加载器在预设的存储路径上加载目标jar包内类;将加载目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器;基于线程默认加载器进行目标jar包内类的命名空间类调用。

31、在有益效果上:本申请在jvm(java virtual machine,java虚拟机)提供类加载器的同时,通过继承应用程序类加载器并将该类加载器设置为线程默认加载器,即可实现特定应用场景调用指定jar包内类,解决不同jar包中同命名空间类冲突的问题;从而提出一种普适性较高的解决不同jar中同命名空间冲突问题的方案,该方案不仅适用冲突命名空间由第三方单位提供jar包内引用相同jar的不同版本的场景,其他场景亦可适用;此外,该方案不依赖于第三方,可有效避免重复工作及多余人力的投入,降低管理成本。

本文档来自技高网...

【技术保护点】

1.一种命名空间类调用方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述将新建的自定义类加载器继承目标父类加载器,包括:

3.根据权利要求1所述的方法,其特征在于,在采用所述自定义类加载器在预设的存储路径上加载目标JAR包内类之前,还包括:

4.根据权利要求3所述的方法,其特征在于,所述根据所述定名信息,确定所述目标JAR包内类的预设加载模式,包括:

5.根据权利要求3所述的方法,其特征在于,所述采用所述自定义类加载器在预设的存储路径上加载目标JAR包内类,包括:

6.根据权利要求1所述的方法,其特征在于,所述将加载所述目标JAR包内类后的自定义类加载器设置为内核中的线程默认加载器,包括:

7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:

8.一种命名空间类调用装置,其特征在于,所述装置包括:

9.根据权利要求8所述的装置,其特征在于,所述继承处理模块,还用于响应于对待调用类的调用请求,新建自定义类加载器;确定待继承的目标父类加载器;将所述自定义类加载器继承所述目标父类加载器。

10.根据权利要求8所述的装置,其特征在于,所述装置还包括模式确定模块,用于获取所述目标JAR包内类的定名信息;根据所述定名信息,确定所述目标JAR包内类的预设加载模式。

11.根据权利要求10所述的装置,其特征在于,所述模式确定模块,还用于基于所述目标JAR包内类的定名信息,判断所述目标JAR包内类的预设字段是否在预设集合中;其中,所述预设字段包括前缀开头预设数量的字段,所述预设集合包括多个从父类加载器加载的类的前缀开头的字段;若所述预设字段在预设集合中,则确定所述目标JAR包内类的预设加载模式为调用父类加载器加载。

12.根据权利要求10所述的装置,其特征在于,所述信息加载模块,还用于将所述自定义类加载器的加载路径设置为自定义的存储路径;将所述自定义类加载器进行实例化;设置实例化后的自定义类加载器的加载行为,以使所述自定义类加载器根据所述预设加载模式,加载在自定义的存储路径上保存的所述目标JAR包内类。

13.根据权利要求8所述的装置,其特征在于,所述内核设置模块,还用于将加载所述目标JAR包内类后的自定义类加载器设置为目标应用程序加载类的成员属性;将加载所述目标JAR包内类后的自定义类加载器加载至内核中,替换内核中指定的已加载的类加载器,作为所述线程默认加载器。

14.根据权利要求8至13任一项所述的装置,其特征在于,所述装置还包括记录补充模块,用于在所述目标JAR包内类的命名空间类调用完成的情况下,生成所述目标JAR包内类的当前调用记录;根据所述目标JAR包内类的当前调用记录,对所述目标JAR包内类的历史调用记录进行补充。

15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。

16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。

17.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。

...

【技术特征摘要】

1.一种命名空间类调用方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述将新建的自定义类加载器继承目标父类加载器,包括:

3.根据权利要求1所述的方法,其特征在于,在采用所述自定义类加载器在预设的存储路径上加载目标jar包内类之前,还包括:

4.根据权利要求3所述的方法,其特征在于,所述根据所述定名信息,确定所述目标jar包内类的预设加载模式,包括:

5.根据权利要求3所述的方法,其特征在于,所述采用所述自定义类加载器在预设的存储路径上加载目标jar包内类,包括:

6.根据权利要求1所述的方法,其特征在于,所述将加载所述目标jar包内类后的自定义类加载器设置为内核中的线程默认加载器,包括:

7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:

8.一种命名空间类调用装置,其特征在于,所述装置包括:

9.根据权利要求8所述的装置,其特征在于,所述继承处理模块,还用于响应于对待调用类的调用请求,新建自定义类加载器;确定待继承的目标父类加载器;将所述自定义类加载器继承所述目标父类加载器。

10.根据权利要求8所述的装置,其特征在于,所述装置还包括模式确定模块,用于获取所述目标jar包内类的定名信息;根据所述定名信息,确定所述目标jar包内类的预设加载模式。

11.根据权利要求10所述的装置,其特征在于,所述模式确定模块,还用于基于所述目标jar包内类的定名信息,判断所述目标jar包内类的预设字段是否在预设集合中;其中,所述预设字段包括前缀开头预设数量的字段,所述预设集合包括多...

【专利技术属性】
技术研发人员:朱琳
申请(专利权)人:中国建设银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1