最近遇到一个需求需要使用idea反编译jar包,idea实际是集成了反编译jar包的功能,现在是需要将一个大的jar包反编译并导出。
- 可以先查看idea是否有安装Java Bytecode Decompiler插件
没有安装可以到idea插件市场搜索进行安装,路径file->settings,在搜索框中输入plugins,不区分大小写,然后点击plugins,在右侧输入java bytecode decompiler进行安装即可。
- 接下来可以使用命令反编译jar包
java -cp "D:\Program Files\idea\ideaIU2024\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true "D:\project\jar\target\test.jar" -o "D:\project\jar\target\temp"
注意双引号不可以少,第一个目录是idea安装路径找到plugins目录下的java-decompiler\lib\java-decompiler.jar包,第二个目录是需要反编译的jar包,第三个是反编译jar包之后输出的目录。
- 一下是反编译过程遇到的问题
错误: 加载主类 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 60.0
根据提示知道,需要反编译的jar包class file version 61.0,当前java运行环境versions up to 60.0,低版本不可以反编译高版本jar包,使用命令 java -version 查看当前jdk版本
从而推断 versions up to 60.0 对应jdk16,那么class file version 61.0应该对应jdk17。
下载安装jdk17,查看当前版本
再次执行反编译命令成功。
ps :
也可以使用其他反编译工具比如使用 Jad、JD-GUI 或 Procyon 等独立工具。
版权归原作者 探索途中的码农 所有, 如有侵权,请联系我们删除。