【问题标题】:Best way to debug Java web application packaged as a WAR using Eclipse and Maven?使用 Eclipse 和 Maven 调试打包为 WAR 的 Java Web 应用程序的最佳方法?
【发布时间】:2011-04-13 00:44:57
【问题描述】:

我以前没有构建过 Java Web 应用程序,但我已经完成了足够的测试,并且 Maven 正在构建我的 WAR 文件。它是一个多模块的 Maven 项目,依赖的模块都有自己的 JAR 文件在 WAR 的 WEB-INF/lib 目录下。

所以一切看起来都很好,但是如何调试呢?我知道如何(从命令行)在我的机器上运行 Tomcat 中的 WAR。我也认为我知道如何从命令行设置和运行 Maven Jetty 插件。但是如何最好地调试...使用我喜欢的 Eclipse 的所有断点和变量检查?

我应该创建某种启动配置,还是远程附加调试器? Eclipse 中是否有可以提供帮助的东西……比如插件?

【问题讨论】:

    标签: java eclipse debugging maven-2


    【解决方案1】:

    如果您使用 tomcat/jetty 插件运行 WAR,则将调试选项传递给 Maven:

    export MAVEN_OPTS="-Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000" mvn tomcat:run
    

    如果您使用常规 Tomcat 运行 WAR,只需启用 JPDA(调试器)支持即可运行它:

    $TOMCAT_HOME/bin/catalina.sh jpda start
    

    Tomcat 6 JPDA 的默认端口是 8000。

    现在将 Eclipse(调试 -> 远程 Java 应用程序)连接到端口 8000 并享受您的调试会话。

    【讨论】:

      【解决方案2】:

      通过eclipse启用调试:

      我将以下内容传递给 Tomcat 启动:

      -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=9999,suspend=n
      

      然后通过Eclipse做Remote Debug。

      • 转到调试菜单 > 调试配置

      • 向下滚动以选择远程 Java 应用

      • rt 点击新建
        配置
      • 选择连接类型为标准 (Socket Attach)并添加主机名 和港口。

      要开始调试,只需在服务器运行时打开它。---

      【讨论】:

        【解决方案3】:

        我应该创建某种启动配置,还是远程附加调试器? Eclipse 中是否有可以提供帮助的东西……比如插件?

        使用 m2eclipse(以及您在 Extras 中 installMaven Integration for WTP),您可以使用 WTP 并在调试模式下启动您的应用程序。

        作为替代方案,您可以将远程调试器连接到 Jetty。见Debugging with the Maven Jetty Plugin in Eclipse

        【讨论】:

        • 我安装了 m2eclipse。如何使用 WTP 在调试模式下启动我的应用程序?
        【解决方案4】:

        将调试选项添加到$MAVEN_OPTS 选项的更好方法,因此不会将它们与其他现有选项合并(如果您想在调试模式下启动应用程序,则必须再次删除这些选项),就是使用Maven开箱即用的调试器mvnDebug,位于其bin目录下,这样mvnDebug jetty:run。这将以调试模式执行您的应用程序,剩下的就是附加您的调试器。

        【讨论】:

        • 我不知道 mvnDebug 是否有一种简单的方法可以从 Eclipse 启动它作为 Maven 启动配置的一部分?
        • 如果你要使用 mvnDebug,那么它应该来自命令行而不是来自 Eclipse(尽管可以从 Eclipse 中分离调试器)。
        猜你喜欢
        • 1970-01-01
        • 2015-03-26
        • 2013-06-11
        • 1970-01-01
        • 1970-01-01
        • 2017-05-01
        • 2016-03-02
        • 1970-01-01
        • 2015-09-29
        相关资源
        最近更新 更多