使用idea进行反编译

首先在idea中安装插件,这里我从marketplace中没找到,然后在installed中发现已经安装好了

image-20221009082901210

找到java-decompiler.jar存放的路径

1
D:\software\IntelliJ IDEA 2021.2.3\plugins\java-decompiler\lib\java-decompiler.jar

在需要反编译的jar包同目录下创建一个文件夹,用来存放反编译之后的文件

image-20221009083158266

在改目录下打开cmd(默认的java是java8)

1
java -cp "D:\software\IntelliJ IDEA 2021.2.3\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true app.jar app

但是会报错

Error: A JNI error has occurred, please check your installation and try again
Exception in thread “main” java.lang.UnsupportedClassVersionError: org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

image-20221009090102729

这是因为jar包中的class文件的版本和本机的java版本不对应的缘故

class文件版本跟jdk版本对应关系如下

1
2
3
4
5
6
7
8
9
10
11
12
49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14
59 = Java 15
60 = Java 16

所以根据报错,应该采用java11进行反编译

1
D:\environment\java\jdk-11.0.2\bin\java.exe -cp "D:\software\IntelliJ IDEA 2021.2.3\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true app.jar app

运行成功

image-20221009090324831

最后在指定的文件夹下会出现一个已经编译好的jar包,进行解压查看即可

其中的源码已经反编译为java文件

image-20221009090453102

参考链接

  1. (8条消息) 使用IDEA的反编译插件 反编译jar包/class文件/修改jar包_cy比昨天更好的博客-CSDN博客_idea反编译jar插件
  2. (8条消息) 使用IntelliJ IDEA反编译Jar包_Alexz__的博客-CSDN博客