使用IDEA插件反编译jar包的实现方式

 更新时间:2025年05月07日 15:53:57   作者:leader_song(小宋编码)  
这篇文章主要介绍了使用IDEA插件反编译jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用IDEA插件反编译jar包

1. 使用说明

项目上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况,只能去看日志的报错行数是哪里,否则,无从下手。

查看日志报错行数时,发现现有代码又和线上的代码不一致,怎么办?

这个时候我们就需要反编译,反编译有很多工具可以使用,比如<font style="color:rgb(51, 51, 51);">JD-GUI</font>。本文接下来就介绍一下如何通过我们神奇的<font style="color:rgb(51, 51, 51);">Idea</font>软件进行反编译jar包。

2. 操作步骤

2.1 下载插件

首先,我们要保证IDEA中有反编译插件。通过【File】——>【Settings】——>【Plugins】输入<font style="color:rgb(51, 51, 51);">Decompiler</font>进行查看,看是否有<font style="color:rgb(51, 51, 51);">Java Decompiler</font>这个插件。

没有安装就下载安装,然后重启IDEA即可。

2.2 查找插件安装路径

1. 右键点击IDEA,选择属性,复制IDEA安装路径

2. 打开文件资源管理器,复制路径(路径不要复制太长看到bin目录即可)

3. 找到IDEA安装路径后,我们就可以找到插件的安装路径在 plugins 文件夹下面,找到 java-decompiler

4. 进入 lib 文件夹,看到插件即可

2.3 反编译

1. 在 lib 文件夹下创建一个目录,如<font style="color:rgb(51, 51, 51);">test</font>文件夹

2. 在 lib 文件夹下放入要反编译的 jar 包

3. 黄色代码是替换的内容

java -cp + “插件路径” + org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true + jar包 + 反编译后存储位置

java -cp "D:\IDEA\IntelliJ IDEA 2020.1.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true test.jar test

4. 然后才此目录下执行命令(两种方式都可以,自行选择)

  • 4.1 通过 cmd 的方式反编译,输入 cmd 回车,输入上面的命令回车

  • 4.2 通过 Git Bash Here 的方式反编译,在当前目录下右键Git Bash Here,输入上面的命令回车

注意 :如果不先创建目录,就执行的话,可能会报错。

3. 查看反编译文件

  • 3.1 执行完之后会在新建的文件夹里面看见反编译之后的文件

  • 3.2 因为以上命令执行后,反编译出来的也是jar包

  • 3.3 用解压软件解压就可以了

  • 3.4 反编译后的目录结构跟jar包是一样的,只不过是把class文件反编译成java文件

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • redis redisson 集合的使用案例(RList、Rset、RMap)

    redis redisson 集合的使用案例(RList、Rset、RMap)

    这篇文章主要介绍了redis redisson 集合的使用案例(RList、Rset、RMap),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java多线程并发之线程池任务请求拦截测试实例

    Java多线程并发之线程池任务请求拦截测试实例

    这篇文章主要介绍了Java多线程并发之线程池任务请求拦截测试实例,队列中永远没有线程被加入,即使线程池已满,也不会导致被加入排队队列,实现了只有线程池存在空闲线程的时候才会接受新任务的需求,需要的朋友可以参考下
    2023-12-12
  • Java基础类学习之String详解

    Java基础类学习之String详解

    这篇文章主要为大家详细介绍了Java基础类中String的相关知识,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
    2022-12-12
  • Springboot集成ClickHouse及应用场景分析

    Springboot集成ClickHouse及应用场景分析

    这篇文章主要介绍了Springboot集成ClickHouse的实例代码,本文通过应用场景实例代码介绍了整合springboot的详细过程,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Spring实现动态修改时间参数并手动开启关停操作

    Spring实现动态修改时间参数并手动开启关停操作

    spring实现定时任务的方式有三种,分别是java自带的timer类、spring task和quartz三种。本文只介绍spring自带的task和第三方quartz,感兴趣的朋友参考下吧
    2017-09-09
  • SpringBoot集成XXL-JOB实现灵活控制的分片处理方案

    SpringBoot集成XXL-JOB实现灵活控制的分片处理方案

    因为需要并行处理同一张数据表里的数据,所以比较自然地想到了分片查询数据,可以利用对 id 取模的方法进行分片,避免同一条数据被重复处理,所以本文给大家介绍了SpringBoot集成XXL-JOB实现灵活控制的分片处理方案,需要的朋友可以参考下
    2024-09-09
  • Spring ApplicationContext接口功能详细介绍

    Spring ApplicationContext接口功能详细介绍

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2023-02-02
  • JAVA调用JavaScript方法代码示例

    JAVA调用JavaScript方法代码示例

    我们都知道脚本语言非常灵活,在处理某些问题的时候Java实现用十几行来写,用js可能不到十行就写完,并且非常简洁,这篇文章主要给大家介绍了关于JAVA调用JavaScript方法的相关资料,需要的朋友可以参考下
    2023-10-10
  • 详细介绍使用Java调用Python的四种方法

    详细介绍使用Java调用Python的四种方法

    这篇文章主要给大家介绍了关于使用Java调用Python的四种方法,每种方法根据实际项目需求有其适用场景,其中,推荐使用Runtime.getRuntime()方法,因为它更为简洁且易于实现,需要的朋友可以参考下
    2024-10-10
  • Java hashCode原理以及与equals()区别联系详解

    Java hashCode原理以及与equals()区别联系详解

    在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致
    2022-11-11

最新评论