Windows版本 反编译
工具:jd-gui-windows-1.6.6
下载地址:https://gitee.com/li_kun_zang/jd-gui/releases/v1.6.6
打开软件
点击File - Open File,然后选择你的一个Jar包
自己审核文件没大问题,那就去导出吧
导出的文件依旧在 BOOT-INF文件夹下的classes里
pom.xml 文件则在:META-INF下的maven文件夹下 进入最里层 导出即可!
通用反编译方式
利用IDEA的反编译工具 反编译我们的代码
思路:
前提:包是JDk8编译的,得用JDK8反编译。目前已知的问题是JDK11的包,用JDK8反编译肯定是失败的!
特殊说明:
你需要找到 java-decompiler.jar所在的位置,就在IDEA安装目录 - plugins - java-decompiler文件夹下。
命令组成:java -cp {IDEA的插件jar} org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true {目标jar包} {生成文件夹路径}
通用命令
java -cp XXXX/java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true 我的项目名.jar 生成文件夹路径
Mac使用教程
mac因为文件夹不是很清晰,所以我提取好java-decompiler.jar所在的位置,方便大家使用!
java -cp '/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar' org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true 我的项目名.jar /Users/zanglikun/Downloads
你可能遇到的报错
错误: 加载主类 org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler 时出现 LinkageError
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 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
上面说Version是什么呢?
XXX是由较新版本的java Runtime(类文件版本61.0)编译的,该版本的java运行时只能识别最高达55.0的类文件。
白话就是我们当前的版本不对!当前Java Runtime版本是55.0,而目标包是61.0编译的。当前的解决方案就是使用61.0的Java Runtime。下面会介绍61.0的Java Runtime对应什么版本的JDK!
Java Class版本对应关系
JDK版本号 | Class版本号 | 16进制 |
1.1 | 45.0 | 00 00 00 2D |
1.2 | 46.0 | 00 00 00 2E |
1.3 | 47.0 | 00 00 00 2F |
1.4 | 48.0 | 00 00 00 30 |
1.5 | 49.0 | 00 00 00 31 |
1.6 | 50.0 | 00 00 00 32 |
1.7 | 51.0 | 00 00 00 33 |
1.8 | 52.0 | 00 00 00 34 |
9 | 53.0 | 00 00 00 35 |
10 | 54.0 | 00 00 00 36 |
11 | 55.0 | 00 00 00 37 |
12 | 56.0 | 00 00 00 38 |
13 | 57.0 | 00 00 00 39 |
14 | 58.0 | 00 00 00 3a |
15 | 59.0 | 00 00 00 3b |
16 | 60.0 | 00 00 00 3c |
17 | 61.0 | 00 00 00 3d |
18 | 62.0 | 00 00 00 3e |
知道了JDK版本,我们就得切换JDK版本了。升级完后,java -version看一下Java版本,确定当前是你需要的JDK版本,在执行反编译就OK了!
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤