java jar包反编译

什么是编译?

对java来说,编译就是把一个.java文件变成一个.class字节码文件的过程;
.java文件是人类易读的,而.class文件是二进制的,人们难以读懂,有时候没有源码文件的话可能需要对jar包进行反编译,把jar包中的.class文件变为.java文件,开发者才好读懂代码逻辑,所以反编译是将.class文件变为.java的过程。

如何反编译?

我们现在的java开发者使用的开发工具一般都是idea了,借助idea的插件可以方便的反编译jar包。

1、首先我们先检查下idea是否已经默认安装了反编译插件java-decompiler.jar了,这个插件一般是idea默认捆绑带上的。

通过File->settings->Plugins查看,在搜索框搜索byte,会出现如下两个插件,其中:
bytecode viewer顾名思义是用于查看字节码文件的;
而java bytecode decompiler则是用于对字节码文件反编译的。

可以看到这两个插件下都有一个标识bundled,说明它们是与idea捆绑的,即安装了idea后默认安装了它们。

而java-decompiler.jar这个插件的安装路径为:
./IntelliJ_IDEA_Community_Edition_2020.2.4/plugins/java-decompiler/lib/java-decompiler.jar

2、反编译情况
1)通过idea操作
默认我们通过idea点开一个.class文件,看到的不是二进制信息,而是可读的代码,这是因为idea默认自动做了反编译。

那我们通过这种方式如何反编译查看一个jar包呢?
a)在idea中新建一个目录,把要反编译的jar包拷贝到这个目录下,然后选择这个jar包右键,选择Add as Library,可以把这个jar包文件添加到当前项目、解压展开且idea自动给反编译成.java文件了,里面可以看到这个jar包所有基于.class文件反编译后的java代码。

2)通过java-decompiler.jar手动执行命令反编译整个jar包
这种方式可以不需要先把jar包加到idea,可以独立于idea之外被反编译

1、确定反编译jar包位置
/d/java/jdk/lib/tools.jar

2、确定反编译后文件的输出位置,注意输出目录必须得事先存在,反编译过程不会自动创建,如果不存在就会报错目标目录不存在
/d/test/

3、执行命令进行反编译
java -cp "./java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true /d/java/jdk/lib/tools.jar /d/test/

引号里的就是反编译插件jar包,后面跟的是jar包执行主类,最后的是需要反编译的jar包以及输出目录
没有指定输出路径报错

将反编译后的解压文件用idea打开查看

参考:https://www.cnblogs.com/Andya/p/13714328.html

你可能感兴趣的:(java jar包反编译)