修改jar包的class文件,如何直接替换jar包里的class文件

  修改jar包的class文件,如何直接替换jar包里的class文件

  00-1010反编译jar包,修改类文件。重新打包解决方案。反编译jar包后,修改源代码,重新编译。1.场景二。详细步骤

  00-1010这两天遇到一个需求:需要修改一个jar包中的逻辑代码,重新打包。

  本来是个简单的问题,但是因为这个jar包不是可执行的jar包(没有main方法入口),所以反编译后jar无法被idea重新打包,因为jar是混乱的。

  所以花了一些时间写在这里。

  

目录

反编译jar包

 

  首先,用一些像jad-gui这样的反编译工具将项目反编译成java包。

  示例jar包并没有真正被企业使用,而只是一个博客演示。假设这个包叫做demo.jar

  此时,您可以将其导出为java文件。

  用javac 编译成class文件

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

  #最后,必须以:结尾#如果有编译问题,可以尝试-xlint3360 unchecked。这个参数javac-classpathdemo.jar3360依赖于jar包路径13360依赖于jar包路径23360。Demo.class此时会在当前运行目录下生成Demo.class。

  此时,目录结构如下(请忽略与上图中jad-gui的不匹配)

  -演示元信息清单。打jar包

  #运行在演示文件夹下#这是最后一个。表示当前目录jarcvfmdemo . jar meta-INF/manifest . MF中的所有文件,完成了:

  

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

 

  00-1010当前jar包函数需要修改,但是没有源代码。

  两种方式:

  通过反编译JD-GUI等软件或IDEA等Java开发常用的其他ide检查源代码,新建一个项目,按照文件结构将文件源代码一个一个复制粘贴到项目中,然后根据个人需求进行修改编译。通过反编译软件JD-GUI,直接以源代码格式保存到一个项目文件中,然后通过IDEA打开项目,进行必要的配置后,根据需求进行修改和编译。显然,第一种方法比较费时,所以选择第二种方法。

  

解决思路

2.1 查看源码

 

  如果只是查看源代码,有两种方法:

  方法1:

  直接通过jd-gui打开jar文件。

  方法二:

  通过IDEA的外部库进行检查。在IDEA中,通过项目结构将要查看的jar包添加到库中,然后就可以查看了。

  虽然第二种方法有点麻烦,但是如果只是看源代码的话,我还是比较喜欢第二种方法。

  2.2生成源文件

  有了jd-gui,可以直接生成**。java**源文件。您可以通过菜单File-Save All Sources生成压缩源文件。

  注意:生成的源代码文件中有一些多余的注释,比如行号和一些元数据信息,可以通过修改jd-gui的preference设置重新生成。

  2.3 构建项目

  直接通过IDEA打开源文件;

  创建src目录,将源文件方法下载到src,根据错误信息修改项目的外部引用;

  2.4 编译成jar包

  有两种类型可供选择:Empty可以设置无主类,适合编译无主类的jar包;

  以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: