System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理,特别是涉及一种jar包修改方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
技术介绍
1、在现代软件开发中,java作为一种广泛使用的编程语言,其生态系统中存在大量的第三方库和组件,这些通常以jar(java archive)包的形式存在。第三方jar包为开发者提供了丰富的功能,使得开发过程更加高效,同时也促进了代码的复用。然而,这些第三方库可能并不总是完美契合每个项目的具体需求。
2、目前,开发者可以通过与第三方库的维护团队合作,请求他们修复问题或扩展功能,并等待他们发布新版本。然而,这种方法存在明显的局限性,如维护团队可能响应缓慢,导致问题得不到及时解决。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够更加精简的jar包修改方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本申请提供了一种jar包修改方法,包括:
3、确定当前运行的java项目中的待修改类,获取与所述待修改类对应的源代码;
4、在本地项目路径中新建与所述待修改类名称相同的待处理类,并将所述源代码复制至所述待处理类中;
5、对所述待处理类中的所述源代码进行修改,得到目标源代码;
6、将所述目标源代码编译,得到目标jar包。
7、在其中一个实施例中,所述确定当前运行的java项目中的待修改类,包括:
8、收集所述java项目中各个类被调用时的运行信
9、若所述调用栈中存在异常,生成异常堆栈信息;
10、根据所述异常堆栈信息定位所述待修改类。
11、在其中一个实施例中,所述待修改类位于原始jar包中;所述方法还包括:
12、若所述java项目为java web工程项目,则将所述目标jar包移动至web-inf中,以使所述目标jar包的加载顺序高于所述原始jar包。
13、在其中一个实施例中,所述方法还包括:
14、获取类加载器的实例,并通过反射确定所述实例中的加载字段;
15、将所述加载字段中所述目标jar包的加载顺序置于所述原始jar包之前。
16、在其中一个实施例中,所述获取与所述待修改类对应的源代码,包括:
17、搜索配置文件,并从所述配置文件中得到远程仓库地址;从所述远程仓库地址下载所述源代码;或者
18、解析所述待修改类的字节码指令,并将所述字节码指令映射为所述源代码。
19、第二方面,本申请提供了一种运行方法,包括:
20、运行java项目;
21、若在所述java项目运行中检测到待修改类,则根据上述任意一项实施例中所述的jar包修改方法进行修改,得到所述目标jar包,并重新运行所述java项目;
22、当运行至所述待修改类,通过类加载器调用运行所述目标jar包中修改后的所述待修改类。
23、第三方面,本申请还提供了一种jar包修改装置,包括:
24、定位模块,用于确定当前运行的java项目中的待修改类,获取与所述待修改类对应的源代码;
25、复制模块,用于在本地项目路径中新建与所述待修改类名称相同的待处理类;
26、修改模块,用于将所述源代码复制至所述待处理类中进行修改,得到目标源代码;
27、编译模块,用于将所述目标源代码编译,得到目标jar包。
28、在其中一个实施例中,所述定位模块包括:
29、收集单元,用于收集所述java项目中各个类被调用时的运行信息,并将所述运行信息压入调用栈;
30、确定单元,用于若所述调用栈中存在异常,生成异常堆栈信息,并根据所述异常堆栈信息定位所述待修改类。
31、在其中一个实施例中,所述装置还包括第一加载模块,用于若所述java项目为java web工程,则将所述目标jar包移动至web-inf中,以使所述目标jar包的加载顺序优于所述原始jar包。
32、在其中一个实施例中,所述装置还包括:
33、第二加载模块,用于获取类加载器的实例,并通过反射确定所述实例中加载字段;将所述加载字段中所述目标jar包的加载顺序置于所述原始jar包之前。
34、在其中一个实施例中,所述装置包括:下载模块,用于搜索配置文件,并从所述配置文件中得到远程仓库地址;从所述远程仓库地址下载所述源代码;或者
35、解析模块,用于解析所述待修改类的字节码指令,并将所述字节码指令映射为所述源代码。
36、第四方面,本申请还提供了一种运行装置,包括:
37、运行模块,用于运行java项目;
38、类修改模块,用于若在所述java项目运行中检测到待修改类,则根据、上述任意一个实施例中所述的jar包修改装置进行修改,得到所述目标jar包,并重新运行所述java项目;
39、调用模块,用于当运行至所述待修改类,类加载器调用运行所述目标jar包中修改后的所述待修改类。
40、第五方面,本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任意一个实施例中的方法的步骤。
41、第六方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
42、第七方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
43、上述jar包修改方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,通过确定java项目中的待修改类,并针对待修改类进行修改,这样可以采用靶向修改的方式,只对目标第三方jar包中有问题、有需求的java类文件进行二次开发提供了一种更加精简的jar包修改方式,这样可以减少开发代价。
本文档来自技高网...【技术保护点】
1.一种jar包修改方法,其特征在于,所述方法包括:
2.根据权利要求1所述的jar包修改方法,其特征在于,所述确定当前运行的Java项目中的待修改类,包括:
3.根据权利要求1所述的jar包修改方法,其特征在于,所述待修改类位于原始jar包中;所述方法还包括:
4.根据权利要求3所述的jar包修改方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的jar包修改方法,其特征在于,所述获取与所述待修改类对应的源代码,包括:
6.一种运行方法,其特征在于,所述方法包括:
7.一种jar包修改装置,其特征在于,所述装置包括:
8.根据权利要求7所述的jar包修改装置,其特征在于,所述定位模块包括:
9.根据权利要求7所述的jar包修改装置,其特征在于,所述待修改类位于原始jar包中;所述装置还包括:
10.根据权利要求9所述的jar包修改装置,其特征在于,所述装置还包括:
11.根据权利要求7所述的jar包修改装置,其特征在于,所述装置包括:
12
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5或6中任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5或6中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5或6中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种jar包修改方法,其特征在于,所述方法包括:
2.根据权利要求1所述的jar包修改方法,其特征在于,所述确定当前运行的java项目中的待修改类,包括:
3.根据权利要求1所述的jar包修改方法,其特征在于,所述待修改类位于原始jar包中;所述方法还包括:
4.根据权利要求3所述的jar包修改方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的jar包修改方法,其特征在于,所述获取与所述待修改类对应的源代码,包括:
6.一种运行方法,其特征在于,所述方法包括:
7.一种jar包修改装置,其特征在于,所述装置包括:
8.根据权利要求7所述的jar包修改装置,其特征在于,所述定位模块包括:
9.根据权利要求7所述的jar包修改装置,其特征在...
【专利技术属性】
技术研发人员:唐力,
申请(专利权)人:中国建设银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。