java反编译jar包并修改class文件重新打包

前言

这两天碰到一个需求:需要修改一个jar包中的逻辑代码,并且重新打包
本来是很简单的问题,但是因为这个jar包不是可执行的jar包(没有main方法入口),jar反编译之后又是不能通过idea重新打包,因为jar是混乱的
所以费了点时间,在此记录下

解决思路

反编译jar包

首先用一些反编译工具类似 jad-gui 之类的 ,将项目反编译成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 .

大功告成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值