【问题标题】:How to debug Java code when using ANT script in Eclipse在 Eclipse 中使用 ANT 脚本时如何调试 Java 代码
【发布时间】:2011-01-25 07:06:55
【问题描述】:

我有一个 java 类,我需要调试它(放置断点并继续使用 F6)。我正在使用 ANT 脚本来初始化、构建、部署和运行代码。我正在使用:

<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" debuglevel="lines,vars,source">

..........

</javac>

但是当我在 foo.java 类中的一行中放置断点并运行 ant 脚本(运行部分,右键单击运行-->Debug As-->Ant Build)时,Eclipse 不会停止在那行代码。

我错过了什么?!

【问题讨论】:

    标签: java eclipse ant debugging


    【解决方案1】:

    &lt;java&gt; ant 任务中你应该添加两个jvm参数(&lt;jvmarg&gt;IIRC)来开启调试:

     -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5432
    

    这将在调试打开的情况下启动 java 程序,并且程序将准备好接受端口 5432 上的调试器连接。然后您应该使用 IDE 的远程调试工具并将其定向到端口 5432。

    【讨论】:

    • 根据设置断点的位置,您可能需要在命令行参数中设置“suspend=y”——JVM 将阻止启动,直到您连接调试器。
    • 另外,ant 脚本不需要在调试模式下启动...事实上,如果它们( 任务和启动 ant 的 java 进程)具有相同的端口 java 任务不会启动。
    • 在我添加 之前它对我不起作用。此外,-Xdebug 和 -Xrunjdwp:transport 都应该定义为单独的 jvm 参数。
    • 这里有一个很好的教程asjava.com/ant/…
    【解决方案2】:

    (无法对给定答案发表评论,因此必须做出另一个答案)

    我意识到从 Eclipse 启动 Ant 时,您必须将 fork="true" 添加到 &lt;java&gt; 任务。另外,我首先不清楚如何编写嵌套的 jvmargs,所以这里举个例子:

    <java classname="..." fork="true">
      <jvmarg value="-Xdebug" />
      <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432" />
      ...
    </java>
    

    【讨论】:

    • 如果我尝试调试自定义 ant 任务该怎么办?
    • 这对我没有帮助。调试指针即将到达 ant 脚本中的断点,而不是 Java 文件。
    • 如果我使用 taskdef 运行课程会怎样?
    【解决方案3】:

    这是为了帮助那些想知道如何调试使用 ant 构建和部署的 Web 应用程序的人。这在遗留应用程序中非常常见。如果项目以“Dynamic Web Project”作为开始,则不需要执行以下步骤甚至 Ant。

    在代码中设置断点。

    Window -> Show View -> Others -> Servers
    

    例如添加您的服务器 JBoss 或 Tomcat。

    右键单击服务器并选择“调试”。

    确保在 ant 构建文件中设置了 debug="true"。

    【讨论】:

      【解决方案4】:

      This is how I got it working for me(仅供参考)。

      提前链接转储:


      调试 ant 任务并不像普通的老式 java 调试那么简单。 虽然您可以调试添加断点的 Ant 文件,但在 特定自定义任务的代码将要求您添加远程调试器 为了能够“捕捉”正在运行的进程。

      我将解释如何在 Eclipse 中执行此操作,尽管我认为它可能是 使用所有主要的 Java IDE 实现。首先是创建一个新的运行 您计划在其中使用自定义的 ant 文件的配置 新任务。为此,请访问:

      运行 -> 外部工具 -> 外部工具配置...

      右键单击 Ant Build -> New 并在 Main 选项卡中选择您的 ant Buildfile 字段中的脚本。然后转到 JRE 选项卡并插入以下内容 JVM 参数:

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

      如果您想知道这些参数的含义,请检查一下,虽然有点 更新 (Java 1.5) 仍然有效。

      完成此操作后,您必须为 远程 Java 应用程序。为此,请导航至:

      运行->调试配置

      在左列下拉列表,在Remote Java中右击 应用程序-> 新建。在项目字段中选择项目名称。 只要您使用相同的主机和端口的默认值 用于 Ant 配置(JVM 参数)。

      一切准备就绪,可以试运行了!在任何地方添加断点 认为有必要。就我而言,我在 ant 脚本中都添加了一个 使用自定义 ant 任务以及在自定义 ant 任务中,在 执行方法。

      右键单击您的 ant 脚本或任务 -> Debug As...-> Ant >Build 首先

      现在在调用您的自定义 ant 任务代码之前,转到 Run-> Debug 配置和调试您之前创建的 Java Remote 应用程序配置。这将启动一个单独的线程来调试 您的自定义 ant 任务代码,前提是您包含一些断点 :) 您可以在下图中看到在我的情况下,线程如何停止 在我的自定义蚂蚁任务的执行方法中。 在此之后,由您决定下一步该做什么......

      【讨论】:

      【解决方案5】:
      set ANT_OPTS=%ANT_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432
      

      在 Eclipse 中

      Toolbar >> Run >> Debug Configurations >> + >> 
      

      给出值:

      Name: Debug_Ant
      Project: active-eclipse-project
      Host:localhost
      Port:5432
      

      【讨论】:

        【解决方案6】:

        在 Eclipse 中:

        Toolbar &gt; External Tool Configurations... &gt; (select your existing ANT build or create new) &gt; JRE tab

        “VM 参数” 中添加:

        -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

        再次Toolbar &gt; Debug &gt; Debug Configurations... &gt; Remote Java Application &gt; New

        Name: Debug Ant
        Project: <Select your project where debug files are kept>
        Host: localhost
        Port: 8787
        

        现在在“External Tool Configurations”中启动“ANT Task”(等待远程 Java 应用程序调试器连接),然后启动“Debug Ant”来自“Debug”工具栏图标。

        【讨论】:

          【解决方案7】:

          步骤:

          1) 使用本地主机作为名称配置远程 java 调试器,端口地址为 8000(或任何您系统的端口地址)

          2)创建一个批处理文件并将其保存在您的tomcat的bin文件夹中(当我们要远程调试时需要此步骤,将服务器保持在同一系统中)。

          在批处理文件中你应该保留这一行:

          设置 JPDA_ADDRESS=8000

          设置 JPDA_TRANSPORT=dt_socket

          catalina.bat jpda 开始

          之后,在您的 java 代码中保留一个断点,然后调试这个远程调试器。它会起作用的。

          编码愉快!!

          【讨论】:

            【解决方案8】:

            我也遇到了这个问题,我做了以下步骤来解决。

            1. 将以下行放入 ANT 文件中

            2. 进入调试配置->远程java应用->新建配置文件,项目名,port=5432,host为localhost,保存。

            3. 现在使用调试模式运行您的 build.xml,然后您应该会在控制台中看到“正在侦听地址 5432 的传输 dt_socket”

            4. 现在运行您配置的调试配置文件。现在您的 selenium 代码将使用调试模式运行。

            希望这会有所帮助。

            如果您仍然遇到问题,请告诉我,以便我可以帮助您。

            谢谢

            【讨论】:

              猜你喜欢
              • 2014-07-02
              • 2012-01-24
              • 2012-01-17
              • 2019-03-29
              • 1970-01-01
              • 1970-01-01
              • 2011-04-09
              • 2013-10-21
              • 2011-02-15
              相关资源
              最近更新 更多