修改JAR文件工具

简介: 本文介绍了一款名为JarEditor的IDEA插件,该插件允许用户直接对JAR包内的文件进行增删改查操作,无需先行解压。通过简单的安装与使用步骤,大大简化了传统上需要解压缩、反编译、重新编译及打包的过程。此外,JarEditor还支持对混淆过的JAR文件进行字节码级别的修改,并提供了强大的搜索功能,支持大小写、全词匹配和正则表达式搜索。对于开发者而言,这款插件无疑极大提高了处理JAR文件的效率和便捷性。

背景

在开发中我们有时会遇到这样的场景,需要修改jar包内某个class,常见的方法就是先解压缩,然后反编译这个class,新建java修改再编译,最后再打包,整个过程是非常耗时的。
这里向大家介绍一款IDEA插件:JarEditor,可以一键修改JAR包内文件,无需解压。

插件安装

首先在插件商城搜索 JarEditor,可直接安装插件

JarEditor_install.png

插件使用

安装完后,任意打开一个jar的class,可以看到反编译后的class内容,选中Jar Editor的tab页签,修改完代码后先点击 Save,这个过程会编译class,编译成功后点击Build Jar就修改jar完成了,就可以直接编辑class了,下面是一个例子:
JarEditor_demo.gif

修改配置和资源文件不要勾选Compile,其他步骤相同。

在JAR文件上右键,可对JAR内文件进行增/删/改/查/复制/粘贴
JarEditor_new_delete.png

搜索功能支持JAR内搜索和全局搜索,支持大小写、全词匹配和正则表达式。
JarEditor_search.png

针对混淆的JAR,也可以通过字节码修改工具直接修改class,而不是普通的编译方式。
比如可以用Javassist,进行字段和方法的增删改。
JarEditor_javassist.png

也可用VisualClassBytes(基于ASM和BCEL的字节码编辑器),可修改类信息、常量池、字段、内部类,以及方法的基本信息、字节码指令、本地变量表、行号表和异常表等。
vcb_main.png

附:修改外部jar

File->Project Structure->Libraries,然后添加工程外的jar即可打开jar内文件修改。

也可以在JAR文件上右键->Add as Libraries.

总结

本文主要介绍了使用JarEditor直接对jar包文件进行增删改查操作,简化了修改jar的流程,感兴趣的朋友可以去试试。

本文篇幅有限,具体原理和实现细节可阅读源码

源码:https://github.com/Liubsyy/JarEditor

目录
相关文章
|
6月前
|
存储 Java 开发者
深入理解Jar文件:创建、使用和多版本控制
深入理解Jar文件:创建、使用和多版本控制
110 0
|
5月前
|
Java Maven
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
|
5月前
|
Java Maven
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
904 0
|
6月前
|
Java
win10下修改jar中的文件
win10下修改jar中的文件
75 1
win10下修改jar中的文件
|
Java 关系型数据库 MySQL
【Java用法】windows10系统下修改jar中的文件并重新打包成jar文件然后运行
【Java用法】windows10系统下修改jar中的文件并重新打包成jar文件然后运行
375 0
|
6月前
|
Java Maven
maven项目导出可执行jar
maven项目导出可执行jar
72 0
|
Java Maven
解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性
执行`java -jar app.jar`命令后,提示jar中没有主清单属性
2497 1
|
Java Maven Spring
Maven编项目编译后在target下的zip文件损坏无法打开
Maven编项目编译后在target下的zip文件损坏无法打开
|
Java Android开发
eclipse目录改名,子目录及JAVA文件同步更改
eclipse目录改名,子目录及JAVA文件同步更改
86 0
eclipse目录改名,子目录及JAVA文件同步更改
|
Java
使用代码把一个目录打包成jar
使用代码把一个目录打包成jar
141 0