目录

1.使用反编译软件jd-gui软件进行返编译

2. .java重新编译问题

3. 重新打包的问题

1.指令打包编辑

      2.使用压缩工具进行解压和压缩 

Linux 方式

仅文本文件

参考:直接修改和替换 Jar 包中文件的几种方式 | 随遇而安 (iszy.cc)


1.使用反编译软件jd-gui软件进行返编译

后端java代码jar反编译 java怎么反编译jar_后端java代码jar反编译

File->open File   打开要反编译的jar包

后端java代码jar反编译 java怎么反编译jar_后端java代码jar反编译_02

找到需要反编译的.class 文件 然后另存为成.java

2. .java重新编译问题

然后修改.java文件 重新编译,重新编译遇到的问题就是 当前的.java 文件引用了好多其他的类 如果直接 javac  xxxx.java  报错信息如下:

后端java代码jar反编译 java怎么反编译jar_反编译_03

 注意这里容易出问题,因为当前java文件可能有一些依赖其他jar包的代码,那就需要一个一个引入

这种我没有实现

第二种:就是创建一个空项目然后把这个类 和所需的依赖按照该项目的结构创建导入进行编译

生成jar 后拿到新的.class文件   我使用这种实现

然后替换原先jar中的.class 重新打包

3. 重新打包的问题

1.指令打包

后端java代码jar反编译 java怎么反编译jar_后端java代码jar反编译_04

           #解压jar包

           jar -cvf xx.jar * 

          手动替换class文件

         # 压缩
         jar -cvf0m test.jar ./META-INF/MANIFEST.MF .   这个命令很重要

      # 压缩-错误命令-网上大部分是下面这个,运行报错 
       jar -cvfm test.jar ./META-INF/MANIFEST.MF .

      

后端java代码jar反编译 java怎么反编译jar_反编译_05

原因是:  文件中的依赖jar包 不能再进行压缩打包了  

      2.使用压缩工具进行解压和压缩 

     压缩的使用 压缩级别选择 存储 不能选择压缩 不然跟上面一样报同样的错误

后端java代码jar反编译 java怎么反编译jar_后端java代码jar反编译_06

后端java代码jar反编译 java怎么反编译jar_jar_07

Linux 方式

我指的 Linux 方式,基本就是指命令行的方式,不包含桌面操作,那个我不是很了解,或许会和 Windows 上的操作比较接近。

仅文本文件

首先需要系统里面安装 vim 和 zip 两个包,如果是 Ubuntu,可以运行 sudo apt install vim zip -y 安装。

然后你可能已经想到了,那就是通过 vim 工具打开 Jar 包,将会显示 Jar 包中的所有文件夹和文件绝对路径,每行显示一个。

后端java代码jar反编译 java怎么反编译jar_反编译_08

通过将光标移动到需要修改的文件上,回车进入文件,像编辑普通文件一样进行修改,修改完成后,:wq 退出返回到文件列表。

接下来可以选择继续编辑其他文件或退出 Jar 包。退出 Jar 包时,请一定要通过:q 退出,这个很重要,如果你像上面保存文件一样加了 w 参数,这个 Jar 包就废了,它将会变成保存了文件列表的一个文本文件。所以请千万通过:q 参数退出 Jar 包,切记!