小编典典

使用spring-boot和IntelliJ调试jsp

spring-boot

我正在使用spring-boot,jsp和嵌入式tomcat开发Web应用程序(战争包装)。该应用程序运行良好,如果我使用spring-
boot:run目标添加了maven运行配置,则我可以调试Java文件而不会出现任何问题。

但是,当我尝试在我的一个jsp文件中添加断点时,IntelliJ显示此错误:“断点不属于任何类”。

如果我将IntelliJ配置为使用外部tomcat服务器,则jsp调试会完美运行。

有没有一种使用spring-boot maven目标调试jsp的方法?这是Spring-boot还是IntelliJ中的maven运行配置问题?

我真的很想能够在我的开发环境中使用完整的spring boot功能。

谢谢。


阅读 343

收藏
2020-05-30

共1个答案

小编典典

问题在于,spring启动会为应用程序生成另一个进程。您必须告诉引导您要调试,而不仅仅是在调试模式下运行maven或gradle命令。:-(参见:

更新:对于我当前的项目,我只提供一个类来初始化war文件中的spring boot。(请参阅相应的howtos,以将spring
boot用于部署在实际Web容器中的war文件)

因此,在前端东西的开发过程中,我使用springboot:run快速重载资源等。对于Java代码的调试,我将这些东西以调试模式部署到了tomcat中。对于发行版,我只需要确定所需的包装类型,因为我的应用程序能够作为jar或war文件运行。

顺便说一句:如果您只想使用tomcat的东西(特殊过滤器等),则可以将嵌入式tomcat用于springboot:run,因此您的环境更加相似,并且您不会遇到幽灵漏洞;-)

更新2

根据https://github.com/spring-projects/spring-
boot/issues/1138,您可以仅运行引导应用程序的main方法进行调试。我想至少使用一次Maven目标会有所帮助,以便所有内容都可以被编译/复制等。它对我有用!:-)

更新3 据Spring Boot团队介绍,他们改变了spring-
boot:run的工作方式,因此从1.2开始,您也应该能够将调试模式用于maven目标,尽管他们建议的启动Spring
Boot应用程序的方法是总是要开始主要方法。

更新4 我可以确认,从spring 1.2开始,您可以直接在调试模式下运行maven目标,以便能够设置断点等。

2020-05-30