最近要看一个功能的实现,只有jar包和部署好的程序,反编译纯看代码难度太大,所以就在想能不能在IDEA调试。晚上睡觉的时候想到了一个点子,隔天捣鼓了一下发现可以调试。
下面是具体的步骤

解压jar包

在这里插入图片描述
解压之后,就得到jar里面的内容,里面有三个目录,我们需要用到BOOT-INF里面的东西
在这里插入图片描述
三个目录具体的意思(文心一言):
在Spring Boot项目中,当一个Spring Boot应用被打包成一个可执行的jar包后,解压这个jar包会得到BOOT-INFMETA-INForg这几个文件夹。以下是这些文件夹的详细说明(文心一言):

在这里插入图片描述
BOOT-INF里面的内容,等下我们会用到classes和lib里面的东西
在这里插入图片描述

新建一个空的maven项目

只要是一个空的maven项目就可以了(之所以用maven项目是后面要加一个springBoot的依赖,这样IDEA就可以把这个项目识别成springBoot项目,就会有图标提示等)
在这里插入图片描述

项目根目录下面新建libs目录

把前面解压的BOOT-INFlib目录里面的所有jar包和未解压的springBootProject.jar放到项目新建的libs包下面,然后将他添加到依赖中,弹框选择确定就行了。可以选中整个libs里面的jar点击添加,也可以选中libs点击添加。注意,每次刷新了maven之后,libs里面的依赖可能要重新添加成项目依赖,这个估计是IDEA的bug。
在这里插入图片描述
在这里插入图片描述

在项目里面新建包,复制代码

不想通过复制代码方式来debug的,可以查看文章springBoot项目只有打包好的jar,没有源码,在IDEA中调试代码(二)
在项目的libs目录里面找到我们刚刚添加进去的springBootProject.jar,因为前面我们把他添加成了依赖,所以IDEA可以直接查看,我们点开classes,把代码和资源文件复制到项目中的src/main里面,代码复制到java文件夹中,资源复制到resources文件夹中。记得包名一定要一样。复制方式有两种,一种是直接点开jar里面的类,然后把整个类里面的内容复制,再在java文件夹中同包名路径下ctrl + v拷贝,IDEA会自动生成一个同名的java文件。第二种是自己新建一个同名java文件,再把代码复制进去。springBoot启动类一定要复制过来
在这里插入图片描述
在这里插入图片描述

引入springboot依赖

springBootProject.jar中的META-INF里面找到maven目录,一直往下找,里面有pom.xml文件,打开,看一下里面使用的是什么版本的springBoot,然后在我们项目中引入这个版本的依赖,只要引入这一个就行了。如果不进行这一步操作,IDEA是没有任何提示的,因为他无法识别成springBoot项目。引入依赖之后,刷新maven,这时候可能会提示类不存在,重新把libs里面的jar添加成依赖(估计是IDEAbug,我每次刷新一下都要重新添加一遍,不然他就提示我类不存在)

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.1</version>
            <scope>compile</scope>
        </dependency>

启动项目

经过上面一系列操作,后续只要像和普通的springBoot项目一样启动就行了,debug也可以
在这里插入图片描述

Logo

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

更多推荐