springBoot项目只有打包好的jar,没有源码,在IDEA中调试代码(一)
最近要看一个功能的实现,只有jar包和部署好的程序,反编译纯看代码难度太大,所以就在想能不能在IDEA调试。晚上睡觉的时候想到了一个点子,隔天捣鼓了一下发现可以调试。下面是具体的步骤。
最近要看一个功能的实现,只有jar包和部署好的程序,反编译纯看代码难度太大,所以就在想能不能在IDEA调试。晚上睡觉的时候想到了一个点子,隔天捣鼓了一下发现可以调试。
下面是具体的步骤
解压jar包
解压之后,就得到jar里面的内容,里面有三个目录,我们需要用到BOOT-INF里面的东西
三个目录具体的意思(文心一言):
在Spring Boot项目中,当一个Spring Boot应用被打包成一个可执行的jar包后,解压这个jar包会得到BOOT-INF
、META-INF
和org
这几个文件夹。以下是这些文件夹的详细说明(文心一言):
BOOT-INF里面的内容,等下我们会用到classes和lib里面的东西
新建一个空的maven项目
只要是一个空的maven
项目就可以了(之所以用maven
项目是后面要加一个springBoot
的依赖,这样IDEA
就可以把这个项目识别成springBoot
项目,就会有图标提示等)
项目根目录下面新建libs目录
把前面解压的BOOT-INF
中lib
目录里面的所有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
添加成依赖(估计是IDEA
的bug
,我每次刷新一下都要重新添加一遍,不然他就提示我类不存在)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.1</version>
<scope>compile</scope>
</dependency>
启动项目
经过上面一系列操作,后续只要像和普通的springBoot
项目一样启动就行了,debug也可以

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