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.145.000 00 00 2D
1.246.000 00 00 2E
1.347.000 00 00 2F
1.448.000 00 00 30
1.549.000 00 00 31
1.650.000 00 00 32
1.751.000 00 00 33
1.852.000 00 00 34
953.000 00 00 35
1054.000 00 00 36
1155.000 00 00 37
1256.000 00 00 38
1357.000 00 00 39
1458.000 00 00 3a
1559.000 00 00 3b
1660.000 00 00 3c
1761.000 00 00 3d
1862.000 00 00 3e

知道了JDK版本,我们就得切换JDK版本了。升级完后,java -version看一下Java版本,确定当前是你需要的JDK版本,在执行反编译就OK了!

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤