在使用idea开发一个Spring Boot + Jsp(虽说现在jsp已经有些过时了) 项目过程中出现了 debug 失效的问题,也就是打的断点没有效果,不能进入断点。
因为web页面用的是Jsp,Spring Boot默认是不支持Jsp作为视图的,所以直接用Application启动项目,会出现访问 Jsp 页面 404 的问题,然后此时可以用 Spring Boot 的插件启动方式来启动项目,就相当于执行命令行:
mvn spring-boot:run
使用这种方式启动Spring Boot项目就可以访问到Jsp页面了。但如果此时你以 Debug 的方式进行插件启动项目,如果出现打断点无效的问题,可以看看是不是
热部署
的问题。
前提:项目使用 Jsp、项目启动是用插件启动的方式
1. 如果你项目满足上述的前提条件,并且使用了 devtools 热部署即 pom 文件中引入了这个依赖,则此时 debug 插件启动项目,断点会失效,删除这个依赖问题解决。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2. 如果你的 pom 文件中没有添加热部署的这个依赖,但是在pom文件中的 <plugin>标签下添加了<fork>true</fork>(和devtools相关的)这行代码,则此时 debug 插件启动项目,断点也会失效,改为 false ,问题解决。
<configuration>
<fork>true</fork>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
</configuration>
fork 标签:将依赖项标记为可选是防止devtools使用您的项目传递应用于其他模块的最佳实践(官方文档),也不懂啥意思
3. 如果你的 pom 文件中既有热部署的依赖也有 fork 标签,并且<fork>true</fork>,此时只要将 true 改为 false ,debug 插件启动项目就可以正常打断点了,同时热部署也就失效了。**
如果你的Spring Boot项目使用了Jsp视图,并且项目是以插件启动的方式启动,则此时使用 devtools 热部署就无法使用 debug ,使用 debug 就无法使用 devtools 热部署,在这种前提条件下要想两者同时使用需要做一些另外的配置,可以参考这篇博客 idea中Debug调试Spring Boot项目配置步骤(插件启动)
如果你的视图使用的是 .jsp 时会出现这种情况,使用 .html 就不会出现这种情况, 因为视图是 .html 文件的时候可以直接用Application启动,问题就出现在 .jsp 插件启动,可以尝试不用插件启动,针对Spring Boot + Jsp 参考网上教程做一些配置,用Application启动,就不会出现这些冲突问题。
程序猿秃头之路
Java 开发
粉丝