修改Jar包源码(无需反编译工具)(文章看起来很长,其实方法超级简单!)

前言:本文结合实际项目案例,介绍修改jar包源码的方式。(其中运用了一些小技巧~)
正文:
场景:在项目中用了第三方的jar包,但是jar包某个类的成员变量是private的,想将其改为public属性,以便为其赋值(源码中没有其提供简单的set方法)
问题:如下图中,源码虽然可以阅读,但是根本无法进行修改。
这里写图片描述
基本思路:
编写修改好的java文件–>编译该java文件为class文件–>解压jar包–>找打待修改文件的class文件并将其替换–>压缩源码文件,并改为jar后缀格式。
那么这一整个流程下来,理论上就可以修改源码了。
实际操作:
第一次尝试(结果失败):将待修改的文件代码拷贝出来,放入到txt文档中,然后修改txt后缀为java。接着打开cmd使用javac 命令对该java文件进行编译。然后就会发现代码中引用的包找不到的错误。第一次尝试到此结束。
这里写图片描述
第二次尝试(结果成功):
上面方法肯定是不行的,因为该文件中引用了外部文件,只编译一个java文件肯定是不行。但是也不可能将其引用的文件都拷贝出来,毕竟其他文件也引用了别的文件,否则就会将整个jar包中的文件都复制出来了。
那有没有别的方法能够获得到修改后的java代码编译后的class文件呢?其实是有的!这里有个小技巧,就可以超简单的做的!
在本工程中新建一个java,与待修改的源文件同名。并且将源码中的代码拷贝在该新的java文件中,在新的文件中修改你想修改的类容(因为新文件时自己创建的,所以可以为所欲为的进行修改),然后你会发现在新的java代码中只会用一行代码错误,就是包名路径错误。
这里写图片描述
这是当然的,因为在jar包中该文件所在包中的位置和我们新建的文件在包中所在的位置是不一样的。当然我们不能将新文件的包名路径改掉,否则就算将该文件编译成功,放在jar中也是没用的。
那么既然如此,我们为何不新建一个包,使其满足该文件所需的包名路径呢?
例如上图中,源码文件中导的包名路径是com.android.pc.ioc.app。我们就在项目中新建这些包,然后将该新的java文件放置其中即可。
这里写图片描述
我们可以看到这时候,新的java文件就没有导包上的错误了。
这里写图片描述
接下来的工作就简单了,利用编译器将整个工程编译。自然就可以获得到新java文件的class文件!
这里写图片描述
然后我们就可以回到刚才的主线上了:
编写修改好的java文件–>编译该java文件为class文件–>解压jar包–>找打待修改文件的class文件并将其替换–>压缩源码文件,并改为jar后缀格式。
随后解压该jar包,替换目标class文件,再次压缩回为jar文件即可!大功告成!
(Tips,在最后一步,压缩为jar文件时要选中两项文件后右键压缩,否则导入到工程后会出现包名找不到的错误,也不能在图中文件夹外部文件夹进行压缩,至于压缩jar包的文件名就没什么要求,可以随意取)
这里写图片描述

总结:本文中的描述方法的关键就是在编译器下通过新建包名对目标文件进行编译。

  • 28
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 35
    评论
Jar包class反编译工具是一种在线工具,可用于将Jar包文件中的class文件进行反编译。 这种工具的主要功能是将编译后的Java字节码文件恢复成可读性较高的Java源代码,方便开发人员进行代码的理解、修改及调试等工作。 在线的Jar包class反编译工具通常通过上传Jar包文件,然后在服务器端进行反编译处理,最后将反编译后的Java源代码以可下载的方式提供给用户。 使用这种工具,用户无需下载和安装额外的软件,只需将需要反编译Jar包文件上传到在线平台,即可获得相应的Java源代码。 Jar包class反编译工具的优势之一是方便快捷,用户只需几步操作即可获得反编译后的Java源代码,节省了安装配置和学习使用其他反编译工具的时间。 同时,由于是在线工具,也更加适用于需要临时反编译的场景,不需要在本地长期保留相关软件。 然而,需要注意的是,由于涉及源代码的反编译,应确保拥有合法的授权和权限,遵守相关的法律和规定。 另外,Jar包class反编译工具反编译出的Java源代码可能与原始代码存在一定的差异,并且可能不包含原始注释等附加信息。因此,在使用反编译代码时,需要根据具体情况进行审慎分析和验证。 总之,Jar包class反编译工具的在线版本是一种方便快捷的工具,能够帮助开发人员在需要反编译Jar包文件的时候,快速获取Java源代码,提高效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值