20220801:强改jar包的一下经历

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

目标是一个dubbo的服务,我们的工程引用了这个服务的消费端JDK包,然后通过JDK包的接口访问服务端。现在需要做个挡板来代替这个服务。由于整个系统都是用了内部的封装的东西,如果自己搭建会非常麻烦。原计划是自己搭建一个同名的provider,然后都是注册到naco上,然后消费者就能自己找到这个假的服务,然后就把请求掉过来,但是好难搭建。。。。。。。然后就放弃了。后面在服务器上拿到了别人的jar包,和启动参数,然后之前这个服务是在我们的服务器上是搭建过的,所有apollo的配置还在,然后就是把这个jar包直接启动起来看看。然后根据报错修改之后,项目启动起来了。这时候就开始想着去修改jar包然后直接运行,然后这个就是一个挡板。

直接改jar包的方法我认为只适合临时使用,且需要改动的逻辑内容非常简单。


提示:以下是本篇文章正文内容,下面案例可供参考

一、需要的工具?

linux服务器、编译器(idea)。

二、使用步骤

1.首先是修改的class文件

1、反编译:要么使用idea把包导进去,idea会自动的反编译能够看到class文件的源代码。或者使用jd-gui之类的。

2、看到源代码,这次的项目主要是用了其中的一个xxximpl.class文件。首先要在idea新建一个maven工程的壳子,然后新建一个同名的Java文件,xxximpl.class,然后将xxximpl.class的Java源代码复制过去,删除自己不需要的代码,然后写入自己的逻辑。此时对工程打包会报错,原因是依赖了其他包或者DTO等东西,此时就要在工程中创建相关的引用的类,切记不能路径不能去改变,只能配合原有的路径进行修改。;

3、然后将工程打包为jar。打包之后解压缩,去除里面的自己的所需要的class文件。这个class文件需要我们植入别人的jar包中,替换同名class文件。

2.如何替换jar包中的class文件

1、使用7zip这种压缩包直接打开,然后拖入进行覆盖。尝试过不行,网上说可以通过winrar进行这样的操作可行,内网没有这个软件,放弃了。

2、使用服务器的jar解压缩命令来做。解压原的jar包(linux命令:jar -xvf xxxxxx.jar),然后替换掉class文件,再压缩(jar -cf0M xxxxxx.jar ./*)压缩当前下的所有文件,压缩后的文件名为xxxxxx.jar ./*。这样就可以运行了。


总结

待办:后续有时间和精力,可以考虑能不能使用更多的业务逻辑。原来的实现类比较负责,还访问了数据库。我们的目标是让他变成挡板,所以直接把原逻辑直接删除完了,然后直接写死返回值。很简单。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值