我正在使用spring-boot,jsp和嵌入式tomcat开发一个Web应用程序(war包装).应用程序运行正常,如果我使用spring-boot:run目标添加maven运行配置,我可以毫无问题地调试java文件.
但是当我尝试在我的一个jsp文件中添加一个断点时,IntelliJ显示了这个错误:'断点不属于任何类'.
如果我将IntelliJ配置为使用外部tomcat服务器,则jsp调试工作正常.
有没有办法使用spring-boot maven目标调试jsp?这是spring-boot或IntelliJ中的maven运行配置的问题吗?
我真的希望能够在我的开发环境中使用完整的Spring启动功能.
谢谢.
问题是spring boot会为应用程序产生另一个进程.您必须告诉启动您要调试,而不是仅在调试模式下运行maven或gradle命令.:-(见:
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-remote-debug-gradle-run
http://docs.spring.io/spring-boot/docs/1.1.4.BUILD-SNAPSHOT/maven-plugin/examples/run-debug.html
更新:对于我当前的项目,我只提供一个类来初始化war文件中的spring boot.(请参阅相应的howtos,将spring boot用于部署在真实webcontainers中的war文件)
所以在开发前端的过程中,我使用springboot:run来快速重新加载资源等.为了调试java代码,我将这些东西部署到调试模式的tomcat中.对于一个版本,我只需要决定我想要哪种打包类型,因为我的应用程序能够以jar或war文件的形式运行.
顺便说一句:如果你只想使用tomcat(特殊过滤器等),你可以使用嵌入式tomcat进行springboot:运行,所以你的环境更相似,你不会搜寻鬼虫;-)
更新2
根据https://github.com/spring-projects/spring-boot/issues/1138,您可以运行启动应用程序的主要方法进行调试.我想至少使用过一次maven目标是有帮助的,所以一切都被编译/复制等等.它对我有用!:-)
更新3 根据spring boot团队的说法,他们改变了spring-boot:run的工作方式,所以从1.2开始你应该能够使用maven目标的调试模式,尽管他们推荐的启动spring boot应用程序的方法是总是要开始主要的方法.
更新4 我可以确认从spring 1.2开始,您可以在调试模式下直接运行maven目标,以便能够设置断点等.