【问题标题】:Debugging jsp with spring-boot and IntelliJ使用 spring-boot 和 IntelliJ 调试 jsp
【发布时间】:2014-06-11 20:45:05
【问题描述】:

我正在使用 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 Boot 功能。

谢谢。

【问题讨论】:

    标签: jsp intellij-idea spring-boot


    【解决方案1】:

    问题在于 Spring Boot 为应用程序生成了另一个进程。您必须告诉 boot 您要调试,而不仅仅是在调试模式下运行 maven 或 gradle 命令。 :-( 见:

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

    所以在开发前端的东西期间,我使用 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 应用程序的方法始终是启动 main 方法。

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

    【讨论】:

    • 谢谢,这很有帮助。我们一直在使用外部 tomcat 进行 jspx 调试和 maven 目标或直接运行 main() 方法进行 java 调试。当你不得不从一个或另一个切换时有点烦人,但我们可以忍受它。
    猜你喜欢
    • 2016-11-19
    • 2019-11-28
    • 2015-03-20
    • 2018-12-18
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多