基于IDEA的插件类加载方法、装置及设备制造方法及图纸

技术编号:39183148 阅读:8 留言:0更新日期:2023-10-27 08:30
本公开实施例提供一种基于IDEA的插件类加载方法、装置及设备,通过响应于IDEA系统的启动请求,获得插件类加载器对象;基于插件类加载器对象,获得第一加载路径集合,第一加载路径集合为插件类加载器对象加载插件类时的第一加载路径的集合;将目标路径从第一加载路径集合中删除,并将目标路径添加至第二加载路径集合,其中,目标路径表征目标插件类的加载路径,第二加载路径集合为系统类加载器对象加载基于IDEA系统的系统类时的第二加载路径的集合;基于系统类加载器对象,加载目标插件类,以使目标插件类继承于系统类。由于修改了系统类加载器和插件类加载器,实现了插件类基于系统类的继承和重写。统类的继承和重写。统类的继承和重写。

【技术实现步骤摘要】
基于IDEA的插件类加载方法、装置及设备


[0001]本公开实施例涉及计算机
,尤其涉及一种基于IDEA的插件类加载方法、装置及设备。

技术介绍

[0002]IDEA全称Intellij IDEA,是Jetbrains为Java/Android应用程序提供集成的程序,开发者可以使用IDEA系统对Android程序进行开发、调试。IDEA系统提供了丰富的插件接口,能让外部开发者使用插件接口自行二次开发,进而定制公司、个人的工具。
[0003]现有技术中,IDEA虽然提供了强大的插件接口,但是开发者用户在使用IDEA时,IEDA系统内不同的插件之间相互隔离,导致开发者所开发的插件无法依赖IDEA系统内的原生功能,从而影响定制化插件的功能实现,影响插件开发效率。

技术实现思路

[0004]本公开实施例提供一种基于IDEA的插件类加载方法、装置及设备,以克服在IDEA系统内开发的插件无法依赖IDEA系统内的原生功能的问题。
[0005]第一方面,本公开实施例提供一种基于IDEA的插件类加载方法,包括:
[0006]响应于IDEA系统的启动请求,获得插件类加载器对象,所述插件类加载器对象用于加载基于所述IDEA系统的插件类;基于所述插件类加载器对象,获得第一加载路径集合,所述第一加载路径集合为所述插件类加载器对象加载所述插件类时的第一加载路径的集合;将目标路径从所述第一加载路径集合中删除,并将所述目标路径添加至第二加载路径集合,其中,所述目标路径表征目标插件类的加载路径,所述第二加载路径集合为系统类加载器对象加载基于所述IDEA系统的系统类时的第二加载路径的集合;基于所述系统类加载器对象,加载所述目标插件类,以使所述目标插件类继承于所述系统类。
[0007]第二方面,本公开实施例提供一种基于IDEA的插件类加载装置,包括:
[0008]第一获取模块,用于响应于IDEA系统的启动请求,获得插件类加载器对象,所述插件类加载器对象用于加载基于所述IDEA系统的插件类;
[0009]第二获取模块,用于基于所述插件类加载器对象,获得第一加载路径集合,所述第一加载路径集合为所述插件类加载器对象加载所述插件类时的第一加载路径的集合;
[0010]处理模块,用于将目标路径从所述第一加载路径集合中删除,并将所述目标路径添加至第二加载路径集合,其中,所述目标路径表征目标插件类的加载路径,所述第二加载路径集合为系统类加载器对象加载基于所述IDEA系统的系统类时的第二加载路径的集合;
[0011]加载模块,用于基于所述系统类加载器对象,加载所述目标插件类,以使所述目标插件类继承于所述系统类。
[0012]第三方面,本公开实施例提供一种电子设备,包括:
[0013]处理器,以及与所述处理器通信连接的存储器;
[0014]所述存储器存储计算机执行指令;
[0015]所述处理器执行所述存储器存储的计算机执行指令,以实现如上第一方面以及第一方面各种可能的设计所述的基于IDEA的插件类加载方法。
[0016]第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的基于IDEA的插件类加载方法。
[0017]第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的基于IDEA的插件类加载方法。
[0018]本实施例提供的基于IDEA的插件类加载方法、装置及设备,通过响应于IDEA系统的启动请求,获得插件类加载器对象,所述插件类加载器对象用于加载基于所述IDEA系统的插件类;基于所述插件类加载器对象,获得第一加载路径集合,所述第一加载路径集合为所述插件类加载器对象加载所述插件类时的第一加载路径的集合;将目标路径从所述第一加载路径集合中删除,并将所述目标路径添加至第二加载路径集合,其中,所述目标路径表征目标插件类的加载路径,所述第二加载路径集合为系统类加载器对象加载基于所述IDEA系统的系统类时的第二加载路径的集合;基于所述系统类加载器对象,加载所述目标插件类,以使所述目标插件类继承于所述系统类。由于在IDEA系统的启动阶段修改了IDEA的系统类加载器和插件类加载器,将目标插件的加载路径从插件类加载器对应的第一加载路径集合转移至系统类加载器对应的第二加载路径集合,进而使加载的插件类能够依赖IDEA系统的系统类,进而在后续开发过程中,可以通过继承和重写,实现依赖IDEA系统内的原生功能的定制化插件。
附图说明
[0019]为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0020]图1为现有技术中一种类加载器工作示意图;
[0021]图2为本公开实施例提供的基于IDEA的插件类加载方法的流程示意图一;
[0022]图3为图2所示实施例中步骤S101的具体实现步骤流程图;
[0023]图4为本申请实施例提供的一种加载目标插件类的对比示意图;
[0024]图5为本公开实施例提供的基于IDEA的插件类加载方法的流程示意图二;
[0025]图6为图5所示实施例中步骤S204的具体实现步骤流程图;
[0026]图7为本公开实施例提供的基于IDEA的插件类加载装置的结构框图;
[0027]图8为本公开实施例提供的一种电子设备的结构示意图;
[0028]图9为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
[0029]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0030]下面对本公开实施例的应用场景进行解释:
[0031]本公开实施例提供的基于IDEA的插件类加载方法,可以应用于定制化插件开发的应用场景,更具体地,例如,用于IDEA系统内的定制化程序调试(debug)插件的开发场景下。IDEA系统是一种用于Java/Android程序开发的工具,IDEA系统内提供了丰富的插件接口,使开发者可以使用插件接口进行二次开发,生成定制化的工具插件,例如定制化程序调试插件,并使用该定制化程序调试插件来针对特定的目标应用进行调试,从而提高该目标应用的开发效率。
[0032]现有技术中,开发者用户在使用IDEA系统开发定制化插件时,需要基于类加载器(ClassLoader),来本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于IDEA的插件类加载方法,其特征在于,包括:响应于IDEA系统的启动请求,获得插件类加载器对象,所述插件类加载器对象用于加载基于所述IDEA系统的插件类;基于所述插件类加载器对象,获得第一加载路径集合,所述第一加载路径集合为所述插件类加载器对象加载所述插件类时的第一加载路径的集合;将目标路径从所述第一加载路径集合中删除,并将所述目标路径添加至第二加载路径集合,其中,所述目标路径表征目标插件类的加载路径,所述第二加载路径集合为系统类加载器对象加载基于所述IDEA系统的系统类时的第二加载路径的集合;基于所述系统类加载器对象,加载所述目标插件类,以使所述目标插件类继承于所述系统类。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取所述第一加载路径集合下的压缩包名称列表,所述压缩包名称列表内包括各所述第一加载路径对应的插件压缩包名称;所述将目标路径从所述第一加载路径集合中删除,包括:若所述压缩包名称列表中包括目标名称,则将目标路径从所述第一加载路径集合中删除,其中,所述目标名称为目标插件压缩包的文件名,所述目标插件压缩包包括所述目标插件类;所述目标路径为所述目标插件压缩包所在路径。3.根据权利要求2所述的方法,其特征在于,所述获取所述第一加载路径集合下的压缩包名称列表,包括:遍历所述第一加载路径集合下各所述加载路径对应的文件字段,获得各所述第一加载路径对应的插件压缩包名称;根据各所述第一加载路径对应的插件压缩包名称,得到所述压缩包名称列表。4.根据权利要求1所述的方法,其特征在于,在所述将目标路径从所述第一加载路径集合中删除之后,还包括:通过反射机制,重置所述第一加载路径集合的缓存,以使所述IDEA系统不再通过所述第一加载路径集合加载所述目标插件类。5.根据权利要求1所述的方法,其特征在于,将所述目标路径添加至第二加载路径集合,包括:通过预设的系统类,获取系统类加载器对象;通过反射机制,获得所述系统类加载器对象的文件字段,所述文件字段用于表征目标插件压缩包的加载路径;将所述目标路径...

【专利技术属性】
技术研发人员:李建新
申请(专利权)人:北京字跳网络技术有限公司
类型:发明
国别省市:

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

1