[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)

之前我们需要修改jar内文件的时候需要解压jar包,反编译class,新建java源文件,修改代码,再编译成class,替换jar包内的class文件。

现在利用IDEA的修改jar插件JarEditor可以直接修改class文件,一气呵成。

https://plugins.jetbrains.com/plugin/24397-jareditor

1. 安装插件 JarEditor

File -> Settings -> Plugins

在这里插入图片描述

2. 在IDEA中添加外部JAR包

在这里插入图片描述

如果jar包在idea的External Libraries中不存在,外部文件可以通过File->Project Structure->Libraries添加。

在这里插入图片描述

3. JarEditor 使用介绍

在具体jar的目录下右键,可以做如下操作:
在这里插入图片描述

下面做一些演示。

在jar内新增文件

在这里插入图片描述

package org.apache.commons.lang3;

public class XinliushijianTest {
    public static String SMILE = "HAHAHA!!!";

    public XinliushijianTest() {
    }

    public static String xinliushijianTest() {
        return "xinliushijian";
    }
}

在jar包内修改文件

在这里插入图片描述

让新增、修改的文件生效

在这里插入图片描述

如上图,从左到右依次点击。

  • 1. 切换到Jar Editor tab页
  • 2. 选择JDK版本
  • 3. 编译修改的java内容,并保存
  • 4. 将修改的class内容重新打包进jar包

Save/Compile会将修改的文件保存到jar包所在目录的jar_edit子目录下,Build Jar会把会jar_edit目录的文件增量写入jar,最后再删除这个目录

测试新增、修改的文件是否可以使用

import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.XinliushijianTest;

public class StringDemo11 {
    public static void main(String[] args) {
        String result = XinliushijianTest.xinliushijianTest();
        System.out.println("result: " + result);

        String result1 = RandomUtils.xinliushijianTest();
        System.out.println("result1: " + result1);

        System.out.println(XinliushijianTest.SMILE);
    }
}

打印

result: xinliushijian
result1: 心流时间
HAHAHA!!!

相关推荐

  1. idea工具反编译jar

    2024-07-14 20:52:02       51 阅读
  2. jar文件替换

    2024-07-14 20:52:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 20:52:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 20:52:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 20:52:02       58 阅读
  4. Python语言-面向对象

    2024-07-14 20:52:02       69 阅读

热门阅读

  1. 前端请求整合

    2024-07-14 20:52:02       17 阅读
  2. 2024.7.13 刷题总结

    2024-07-14 20:52:02       22 阅读
  3. 安卓热门面试题二

    2024-07-14 20:52:02       19 阅读
  4. 单元化(Cell Sharding)

    2024-07-14 20:52:02       21 阅读
  5. 网络安全-网络设备及其配置1

    2024-07-14 20:52:02       22 阅读
  6. C++指针

    2024-07-14 20:52:02       24 阅读
  7. Tensor-LLM简单介绍

    2024-07-14 20:52:02       22 阅读
  8. cosyvocie 自回归模型忽大忽下问题解决方案

    2024-07-14 20:52:02       19 阅读
  9. k8s之client-go:golang与k8s交互的桥梁

    2024-07-14 20:52:02       23 阅读