springBoot项目只有打包好的jar,没有源码,在IDEA中调试代码(二)
这种方式好处就是可以改jar包里面的代码,缺点就是当jar包中的类过多时,会耗费大量的时间来复制。而且如果代码是做了混淆等处理,通过复制jar包中的代码这种方式就不可行,因为反编译出来的代码可能是错误的。首先,之所以第一篇文章会采用复制的方式,是因为当时发现把所要运行的jar包也当作依赖放到libs中,运行代码会提示类找不到或缺失一些什么配置,当时没时间排查是什么问题,就采用了复制代码的方式。有时
在springBoot项目只有打包好的jar,没有源码,在IDEA中调试代码(一)中,详细介绍了只有jar包没有源码的情况下在IDEA中调试代码。文章在项目里面新建包,复制代码一节介绍的方式是复制jar包中代码和资源文件到src/main
目录下。这种方式好处就是可以改jar包里面的代码,缺点就是当jar包中的类过多时,会耗费大量的时间来复制。而且如果代码是做了混淆等处理,通过复制jar包中的代码这种方式就不可行,因为反编译出来的代码可能是错误的。
有时候,我们只是想debug,不想通过复制类的方式来运行,就需要通过其他方式来达到目的。
首先,之所以第一篇文章会采用复制的方式,是因为当时发现把所要运行的jar包也当作依赖放到libs中,运行代码会提示类找不到或缺失一些什么配置,当时没时间排查是什么问题,就采用了复制代码的方式。
这里介绍第二种方式,这里就不再详细介绍1、2、3步的操作了,具体请看第一篇文章。
第4步是重点,第4步是重点,第4步是重点
假设我们有一个a.jar
- 解压jar包
解压a.jar
,打开BOOT-INF
目录,会看到一个lib
目录,还有一个classes
目录,lib
目录里面的jar
就是a.jar所需要三方依赖,classes
里面的就是源代码打包之后的class
文件; - 新建一个空的maven项目
也可以新建一个普通java项目,取决于自己,如果想让IDEA识别成springBoot项目,就得弄成maven项目,然后引入相关依赖;注意,每次刷新了maven之后,libs里面的依赖可能要重新添加成项目依赖,这个估计是IDEA的bug。 - 项目根目录下面新建
libs
目录
把前面解压的lib
目录里面的所有jar复制到libs
目录里面去,然后添加成项目依赖。可以选中整个libs
里面的jar
点击添加,也可以选中libs
点击添加。 - 解压的文件做个处理后重新压缩成jar
区别于第一篇文章的就是这个,第一篇文章之所以当成依赖放进去之后无法找到类,是因为a.jar
的结构导致的。要想当成依赖使用,源代码编译成的class(含包名)必须放在根目录,然后还需要一个META-INF
目录,里面存放一个描述文件。这个可以随便找一个三方依赖解压,看一下里面的结构。
这里随便截图一个三方依赖的jar截图
具体的操作步骤如下:- 新建一个空白的目录
folder
- a.jar解压的
BOOT-INF/classes
目录下的所有文件复制到folder
目录下 folder
目录下新建一个META-INF
目录,在这个目录下面新建一个MANIFEST.MF
文件,文件内容如下(随便找一个三方依赖复制就行了):Manifest-Version: 1.0 Archiver-Version: Archiver Built-By: name Created-By: Apache Maven 3.6.1 Build-Jdk: 1.8.0_411
- 把
folder
目录里面的所有文件压缩成zip
,然后改名为custom.jar
(文件格式从zip
改成jar
) - 把这个
custom.jar
放到libs
包里面,和其他依赖一样,加入到项目依赖中
- 新建一个空白的目录
- 在项目里面新建包,复制启动类
如果想改一些配置文件,还可以复制一些配置文件过来 - 启动项目

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)