使用JD-GUI编译jar中的class文件,重新打包发布
下载JD-GUI
下载安装JD-GUI:http://java-decompiler.github.io/
启动app踩坑
报错原因:app启动脚本不符合当前操作系统的指令规范,详情如下:
如果你的电脑是mac的高版本可能会遇到如下bug:
ERROR launching 'JD-GUI'
No suitable Java version found on your system!
This program requires Java 1.8+
Make sure you install the required Java version.
上述问题是由于当 JD-GUI 执行启动脚本universalJavaApplicationStub.sh过程中,需要确定要使用的 Java 版本信息来安装。在启动脚本调用操作系统API执行如下指令:
/usr/libexec/java_home -F -v 1.8+
查找jdk版本信息的时候,系统返回会报错:这是由于这个指令不符合当前操作系统的指令规范。
我们需要替换或者修改 JD-GUI 程序里的启动脚本解决上述问题,参考步骤如下:
-
先将下载下来的
jd-gui-osx-1.6.6.tar解压,然后将JD-GUI.app文件拷贝到Applications目录下 -
右键点击app:改动
Contents/MacOS/universalJavaApplicationStub.sh文件

-
改动universalJavaApplicationStub.sh文件:改动后的代码后如下:
/usr/libexec/java_home -F -v ${JVMVersion}直接通过获取的操作系统的jdk版本的环境变量,执行脚本解决问题,具体操作如下:将
Contents/MacOS/universalJavaApplicationStub.sh文件的内容替换为 https://github.com/tofi86/universalJavaApplicationStub/blob/v3.2.0/src/universalJavaApplicationStub 中的内容然后保存,重新启动app。
反编译JAR
-
打开jar包文件,或者解压文件:
jar xf test.jar

-
指定.class文件使用command/control + s保存文件成.java文件
-
修改.java文件,然后使用javac指令编译.java文件成.class文件
javac test.java -
使用jar命令将jar包中的.class文件替换成指定的class文件
jar -uf demo-api-1.1.0.jar org/springframework/boot/loader/util/test.class
本文介绍使用JD - GUI编译jar中的class文件并重新打包发布的方法。包括下载JD - GUI,解决启动app时因脚本不符合操作系统指令规范的问题,以及反编译JAR的具体操作,如保存.class为.java、修改编译后替换jar包中的.class文件。
1917

被折叠的 条评论
为什么被折叠?



