java如何反编译jar包并修改class⽂件重新打包⽬录
反编译jar包并修改class⽂件重新打包
解决思路
jar包反编译后修改源码再编译
1.场景
2.详细步骤
反编译jar包并修改class⽂件重新打包
这两天碰到⼀个需求:需要修改⼀个jar包中的逻辑代码,并且重新打包
本来是很简单的问题,但是因为这个jar包不是可执⾏的jar包(没有main⽅法⼊⼝),jar反编译之后⼜是不能通过idea重新打包,因为jar是混乱的所以费了点时间,在此记录下
解决思路
反编译jar包
⾸先⽤⼀些反编译⼯具类似之类的 ,将项⽬反编译成java⽂件包
⽰例的jar包并不是业务真正使⽤,只是写博客demo,假设这个包就叫 demo.jar
这时候导出为java⽂件即可
⽤javac 编译成class⽂件
注意这⾥容易出问题,因为当前java⽂件可能有⼀些依赖其他jar包的代码,那就需要⼀个⼀个引⼊
# 最后必须以 : 结束
# 如果有编译问题可以尝试 -Xlint:unchecked 这个参数
javac -classpath demo.jar:依赖jar包路径1:依赖jar包路径2: Demo.java
此时会在当前运⾏⽬录下⽣成 Demo.class
此时⽬录结构如下(请忽略和上图jad-gui的不匹配)
-
demo
- META-INF
MANIFEST.MF
- com
- demo
demo.class
打jar包
# 在demo⽂件夹下运⾏
# 最后这个 . 代表当前⽬录所有⽂件
jar cvfm Demo.jar META-INF/MANIFEST.MF .
⼤功告成:
jar包反编译后修改源码再编译
1. 场景
需要对当前的jar包功能进⾏修改,但是没有源码
两种⽅式:
通过反编译软件如JD-GUI或其他Java开发常⽤的IDE如IDEA查看源代码,创建新⼯程,按照⽂件结构逐个将⽂件源码复制粘贴到⼯程中,再根据个⼈需求进⾏修改、编译等。
通过反编译软件JD-GUI直接保存成源码格式的⼯程⽂件,再通过IDEA打开⼯程,进⾏必要的配置后,再根据需求进⾏修改编译。
很明显第⼀种⽅式⽐较费时,选⽤第⼆种⽅式。
2. 详细步骤
2.1 查看源码
如果仅仅是查看源代码的话,有两种⽅式:
⽅式⼀:
直接通过jd-gui打开jar⽂件即可。
⽅式⼆:
通过IDEA的External Libraries查看。在IDEA中通过Project Structure将需要查看的jar包添加到Libraries,之后就可以查看了。
第⼆种⽅式虽然稍微⿇烦⼀点,但如果只是查看源码的话,个⼈更倾向第⼆种。
2.2 ⽣成源⽂件
借助jd-gui可以直接⽣成**.java**源⽂件。通过菜单File -> Save All Sources就可以⽣成源⽂件压缩包。
注:查看⽣成的源码⽂件中有⼀些多余的注释,如⾏号及⼀些元数据信息,可以通过修改jd-gui的偏好设置重新⽣成。
2.3 构建项⽬
通过IDEA直接打开源⽂件;
spring怎么读取jar文件
创建src⽬录,将源⽂件⽅法到src下,根据报错信息,修改⼯程的外部引⽤;
2.4 编译成jar包
两种类型可以选择:Empty可以不设置主类,适⽤于编译没有主类的jar包;
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。