如何反编译jar或者war包,修改后重新打包部署
- 踩坑之旅
- 前言
- 如何反编译jar吧和war包
- 如何查看修改jar包源码
- 结语
踩坑之旅
前言
啦啦啦,我是踩坑的小行家。又开始新一轮的踩坑之旅,领导叫我修改一个前同事的程序,重新开启被关闭的短信功能。修改完,测试通过后,就是部署。我心里还暗自窃喜了几分,终于完成了啊,压根儿没把部署放在眼里,不就几分钟的事儿吗?然而,你们知道的,踩坑之旅正式开始。话不多说,开始进入正题吧。
如何反编译jar吧和war包
其实如果想要查看一个jar包或者war包里面有些什么文件,那是非常好办的,jar包和war包听起来高大上,其实就是一个压缩包而已,我们只需要右键,解压到目录就可以了。
一个jar包解压出来,大概有以下几种文件:
META-INF文件夹相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务。这个文件夹和其中的 MANIFEST.MF文件,在用jar打包时自动生成。执行jar文件的时候,这个jar里是需要具备 META-INF/MANIFEST.MF的,否则java -jar就找不到main class。
BOOT-INF里面主要就是经过编译后的class文件和需要的jar依赖包以及配置文件,至于org文件用来干嘛,暂时不知道,哈哈,想了解的小伙伴可以自己查查。
war包里面的解压出来的文件也是大同小异,WEB-INF里面放的是class文件,依赖文件和配置文件,webB里面放的是一些jsp文件,resource文件里放的是一些css,js文件。
如何查看修改jar包源码
查看jar包源码可以用jd-gui。
使用方法:进入解压后的jar包或者war包目录,随便找一个.class文件打开,然后jd-gui就会打开改目录下的所有.class文件。如果手里面有java源码,那么修改测试成功后,直接编译字节码文件。接下来选择你要修改的jar,直接用压缩软件打开,将自己修改编译好的class文件放到对应压缩jar包或者war包的文件目录下,替换即可。
有的小伙伴可能会说,既然我手里有源码,我为不直接修改打包部署呢?当然如果这是你自己写的代码,那完全没问题,但是如果是别人写的代码,你直接去打包他的源码,然后部署,那可能会出大问题,因为你永远不知道他部署的时候修改了哪些配置,然后就报一堆错,特别是对于像我这样的小白来说,更是头大。
结语
没写些什么东西,哎,改别人的代码真痛苦,希望留点东西,自己以后遇到相同的问题时,可以来看看,希望对大家也有所帮助。