Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Freemarker模板使用
  • Java项目通过Log4j将日志发送到Kafka
  • Java Maven中自动代码检查插件
  • Protobuf详细介绍
  • 提升开发效率:JCommander高效Java命令行参数解析利器
  • 36k Star!Arthas Java开发者的故障排查利器
  • 高级单元测试中的 Mockito 使用指南
  • Java代码覆盖率工具
  • Jar包源码修改
    • 1. 下载 Luyten
    • 2. 使用 Luyten 打开 Jar 包
    • 3. 修改 Hutool.java 文件
    • 4. 编译修改后的代码
    • 5. 准备重新打包
    • 6. 替换 Class 文件
    • 7. 打包新的 Jar 包
    • 8. 验证修改
  • 《Java技术文档》
Jast-zsh
2024-11-09
目录

Jar包源码修改

# 快速源码修改指南:轻松编辑 Jar 包中的代码

在软件开发和维护过程中,经常需要对已有的 Jar 包进行修改。这种操作可能是为了修复 Bug、增加功能或者做其他优化。在这篇文章中,我们将详细介绍如何使用 Luyten 工具对 Jar 包进行反编译、修改和重打包。通过实际示例,逐步展示整个过程。

# 1. 下载 Luyten

在开始之前,您需要下载 Luyten 工具。它是一个开源的 Java 反编译器,使用起来非常方便。Luyten 可以帮助开发者轻松地查看和修改 Java 类文件,支持多种Java版本的类文件反编译,可以说是开发者的得力助手。

下载地址:https://github.com/deathmarine/Luyten/releases

# 2. 使用 Luyten 打开 Jar 包

下载并安装 Luyten 后,您可以打开该工具,直接将需要的 jar 包拖入到 Luyten 窗口中进行反编译。

这里使用 hutool-all-4.1.0.jar 文件的 Hutool 类作为示例。通过 Luyten,您将能够查看该 Jar 包中的 Java 类源代码。

image-20241108152211860

接下来,点击File -> Save As...,将所需的 .java 文件保存到本地目录。

image-20241108152309203

image-20241108152335781

注意:保存的文件是.java格式,您可在后续步骤中对代码进行修改。

# 3. 修改 Hutool.java 文件

接下来,您可以对下载的 Hutool.java 文件进行修改。比如,我们可以在构造方法中添加一条输出语句,用于测试修改是否成功:

package cn.hutool;

public class Hutool
{
    private Hutool() {
        System.out.println("你好啊");
    }
}
1
2
3
4
5
6
7
8

在这里,我们简单的添加了一行打印语句,这样可以在实例化 Hutool 类时看到输出。

# 4. 编译修改后的代码

完成修改后,接下来要对更改后的代码进行编译。可以使用以下命令执行编译操作:

javac Hutool.java
1

提示:由于 Hutool 类没有依赖其他 Jar 包,因此可以直接编译。如果您反编译的类依赖于其他 Jar 包,则需将这些依赖添加到编译命令中。例如:

javac -cp "a.jar:b.jar:c.jar" Hutool.java
1

编译完成后,可以在相同目录下找到生成的 .class 文件。

# 5. 准备重新打包

为了重新打包,我们需要将 .class 文件和原 Jar 包放到同一个目录下。您可以运行以下命令来组织文件:

mkdir /tmp/test
mv hutool-all-4.1.0.jar /tmp/test
mv Hutool.class /tmp/test
1
2
3

接下来,解压原有的 Jar 包,以便替换掉被修改的类文件。

cd /tmp/test
jar -xvf hutool-all-4.1.0.jar
1
2

# 6. 替换 Class 文件

解压完成后,我们就可以将修改后的 Hutool.class 文件替换到解压后的文件夹中。首先,您需要删除原 Jar 包中旧的类文件,然后将修改后的类文件移动到适当的位置。

# 删除原有类文件
rm cn/hutool/Hutool.class

# 移动新类文件
mv Hutool.class cn/hutool

# 删除原有 jar 包
rm hutool-all-4.1.0.jar
1
2
3
4
5
6
7
8

# 7. 打包新的 Jar 包

完成类文件的替换后,可以通过以下命令重新打包 Jar 包:

jar -cvf hutool-all-4.1.0.jar .
1

# 8. 验证修改

为了确保修改成功,再次使用 Luyten 打开新的 Jar 包并查看 Hutool 类。

image-20241108154430739

上次更新: 2024/11/12, 21:00:09
Java代码覆盖率工具

← Java代码覆盖率工具

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式