System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别是涉及一种命名空间类调用方法、装置、计算机设备、存储介质和计算机程序产品。
技术介绍
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包内类的预设字段是否在预设集合中;其中,所述预设字段包括前缀开头预设数量的字段,所述预设集合包括多...
【专利技术属性】
技术研发人员:朱琳,
申请(专利权)人:中国建设银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。