当java应用程序在运行过程中遇到问题时,一般会抛出异常并打印堆栈信息,这些堆栈信息链中常常可以看到一些二方包和三方包。在排查问题时,很多时候我们需要查看这些二方包和三方包的源码。二方包是公司内部其它部门的产出物,虽然折腾些但协调下一般还是能查看到源码的;三方包如果是开源的项目,也能找到源码;但对于非开源项目的 jar 包,如果想查看源码,就不得不用到反编译工具了。
目前市面上常见的java反编译工具,及其官方链接如下:
jad: https://varaneckas.com/jad/
JadClipse: 基于jad 的适用于eclipse 的插件:http://jadclipse.sourceforge.net/wiki/index.php/Main_Page
jd-gui: http://java-decompiler.github.io/
其中 jd-gui是 jd project 名下的产品,jd project名下包括了3款具体产品,如下图所示:
除此之外,IntelliJ IDEA 也有自己的反编译插件 java bytecode decompiler,如下如所示:
在此详细介绍下 jd project:Java