关注微信公众号:CodingTechWork,一起学习进步。

引言

  在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况,只能去看日志的报错行数是哪里,否则,无从下手。
  查看日志报错行数时,发现现有代码又和线上的代码不一致,又阻塞了,怎么办?这个时候我们就需要反编译,反编译有很多工具可以使用,比如JD-GUI。本文接下来就介绍一下如何通过我们神奇的Idea软件进行反编译jar包。

实践

idea反编译插件

  首先,我们要保证IDEA中有反编译插件。通过【Settings】——>【Plugins】输入Decompiler进行查看,看是否有Java Bytecode Decompiler这个插件。

命令行进行反编译

查找插件路径



  找到IDEA安装路径后,我们就可以找到插件的安装路径:C:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\java-decompiler\lib\java-decompiler.jar

反编译

  在jar包同目录下创建一个目录,如decompiler_test文件夹。



  然后,使用git-bash命令行执行以下命令:

java -cp "C:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true demo-0.0.1-SNAPSHOT.jar decompiler_test

注意

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

$ java -cp "C:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true d                              emo-0.0.1-SNAPSHOT.jar decompiler_test
error: destination 'decompiler_test' is not a directory

查看反编译文件



  因为以上命令执行后,反编译出来的也jar包。需要我们进行解压(通过解压工具):



  解压后的jar包里面显示的即为java文件:

总结

  至此,就可有通过IDEA中的插件对jar包进行反编译。整个流程主要依赖于IDEA中的Java Bytecode Decompiler插件。

IDEA—使用插件反编译jar包的更多相关文章

  1. jad 反编译 jar包

    1.利用winrar解压缩jar包 或者CMD>jar -xvf test.jar -C classes 2.下载jad,利用jad反编译jar包 CMD>[jad_home]/jad.e ...

  2. 反编译Jar包

    Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...

  3. 如何修改可运行Jar包,如何反编译Jar包

    将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All  ...

  4. JD-GUI反编译jar包为Java源代码

    程序员难免要借鉴其他java工程的代码.可有时只能拿到.calss文件,jar包或者war包,这个时候要求程序员能熟练的将这些类型文件反编译为Java代码并形成可编译运行的项目.本文介绍的反编译工具是 ...

  5. idea反编译jar包,jclasslib Bytecode Viewer

    下载 jclasslib Bytecode Viewer https://plugins.jetbrains.com/plugin/9248-jclasslib-bytecode-viewer/ver ...

  6. IDEA反编译jar包源码

    1.maven 项目查看jar源码 如何在idea中查看jar包源码   文章目录 准备jar包 idea打开文件夹 最后一步 准备jar包 例如,我准备看resin的jar,在桌面准备了一份 ide ...

  7. Eclipse Oxygen(4.7.0)安装插件Eclipse Class Decompiler反编译JAR文件

    引用自官方内容 Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行 ...

  8. MatLab 2014a编译jar包时mcc无法使用的问题

    http://blog.csdn.net/heroafei/article/details/43273373 MatLab 2014a编译jar包时mcc无法使用的问题 2015-01-29 16:5 ...

  9. eclipse 如何修改maven插件本地仓库jar包默认存储位置

      eclipse 如何修改maven插件本地仓库jar包默认存储位置 CreateTime--2018年4月18日11:04:47 Author:Marydon 1.更改eclipse的maven本 ...

随机推荐

  1. 进阶6:连接查询 一、sql92标准

    #进阶6:连接查询/*含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 笛卡尔乘积现象:表1 有m行,表2有n行,结果=m*n行 发生原因:没有有效的连接条件如何避免:添加有效的连接条 ...

  2. 【踩坑笔记】layui之单选和复选框不显示

    直接上代码,下面前端页面代码,使用layui框架: <div class="layui-form-item">      <div class="lay ...

  3. eclipse git提交项目以及down项目大致步骤

    down git项目步骤: 复制了url之后,import projects项目选中from git ,会出现如下截图,信息会自动填充 填好信息一直Next即可 完成之后,打开“Git Reposit ...

  4. Kubernetes K8S之资源控制器StatefulSets详解

    Kubernetes的资源控制器StatefulSet详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...

  5. JVM大作业5——指令集

    JVM的每一个线程都有一个虚拟机栈,方法调用时,JVM会在虚拟机栈内为该方法创建一个栈帧. 一条线程,只有正在执行的方法对应的栈帧时可活动的,这个栈帧被称为当前栈帧,当前栈帧对应的方法被称为当前方法, ...

  6. 焦大:seo思维光年(上)检索的价值观

    http://www.wocaoseo.com/thread-55-1-1.html 检索的价值观是什么?最近很多人咨询我这个问题,因为在百度上根本找不到相关的资料,其实这个东西也是我自己总结的,比如 ...

  7. Javascript数组与函数初识

    1 - 数组 1.1 数组的概念 数组可以把一组相关的数据一起存放,并提供方便的访问(获取)方式. 数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素.数组是一种将一组数 ...

  8. luogu_P3373 solution

    luogu_P3373 solution Problme Description  Now, you have a known series, there are three operations: ...

  9. python练习 - 文本的平均列数+CSV格式清洗与转换

    文本的平均列数 描述 打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬ ...

  10. Cobalt strike与内网渗透

    cobalt strike的用法参照我之前的博客: https://www.cnblogs.com/vege/p/12743274.html 这里只演示上线之后的操作. Socks代理 开启socks ...