最近碰到了一个问题,公司通用的导入导出功能默认导出到/tmp目录下,而且是jar包里写死的,因为公司办公电脑是用IOS的,但是我现在居家办公,使用windows导出总是报错:文件路径不存在,因此就想去修改jar包,以下爱是修改jar包的几种方式。
第一种:本地重写类覆盖
- 找到所需要重写的方法所在类,查看其中的路径
- 在我们src目录下新建一个同包名同类名的类
- 将jar包中的重写方法所在类的所有代码复制到我们新建的同包名同类名的类中
- 在我们新建的同包名同类名的类中修改对应的方法中的代码,注意要保持方法中的参数不要发生改变,也不要删除原类中已有的方法,但是可以新增一些方法。
原理:
**编译输出的时候会优先使用我们src下面的类,而不是优先使用Jar包里面的类,这样就达到了覆盖jar包方法的目的。
**
第二种:重写class覆盖
在不影响项目目录结构的情况下可以使用这种方式:
1-4 的步骤与第一种方式的1-4步骤相同。
5、将同包名同类名的类重写好,将.java文件编译成.class文件。
6、桌面新建一个文件夹,将编译好的.class文件存进去。
7、打开jar包所在的文件目录
6、使用压缩软件预览jar包中的class文件
压缩软件我用的Bandzip
7、将 jar 包中需要替换的类删除(jar中的原文件),把自己编译好的.class文件复制进去。
8、替换
9、删除在我们的src目录下新建的包、类。
第三种,动态代理 AOP切面处理
此方案用于,明确知道返回逻辑的情况,可直接修改返回值或者入参,切限制于AOP生效的情况下