为自由格式的 Java 项目创建调试目标

另请参见 

要在 IDE 的调试器中运行 ,项目的生成脚本中必须包含一个专门的目标。此外,还需要将该目标映射到 IDE 的“调试项目”命令。

如果没有为项目编写调试目标,则在第一次尝试调试项目时,IDE 将为您生成一个基本目标。您可以检查该目标,并对该目标进行定制以满足项目的特定需求。

为自由格式项目创建调试目标:

  1. 在“项目”窗口中,右键单击项目节点,然后选择“设置为主项目”。
  2. 选择“运行”>“调试主项目”。
  3. 在出现的“调试项目”对话框中,单击“生成”。

    在名为 ide-targets.xml 的文件中即创建了名为 debug-nb 的目标。生成的 ide-targets.xml 文件是一个用于导入主 build.xml 文件的生成脚本,因此,调试目标可以利用由主生成脚本设置或引用的目标和属性。

    此外,还会在 project.xml 文件中创建该目标的映射,以便在 IDE 中选择“调试项目”命令时调用该目标。如果从头开始编写目标,还需要自行创建该映射。请参见手动将目标映射到菜单项

  4. 验证生成的 debug-nb 目标是否适当地兼顾了项目的所有元素。特别值得注意的是,如果目标未在运行类路径中包含所有项,则可能需要在目标中修改 <classpath> 参数。

在创建目标后,便可以开始调试了。开始调试:

  1. 在主类中设置一个断点。单击要设置断点的行的左侧空白处,可以完成此操作。具有断点的行将以粉红色突出显示。
  2. 重新右键单击项目的节点,然后选择“调试项目”。

    此时,将运行目标并开始执行程序。目标的运行进度将显示在“输出”窗口中,而调试器的状态则显示在“输出”窗口底部的状态栏中。

典型的自由格式项目调试目标

生成的 Ant 目标将执行以下操作:

生成的调试目标(IDE 能够猜测出它的运行时类路径)会按以下方式显示,其中,斜体项表示特定于具体项目的值:

<?xml version="1.0" encoding="UTF-8"?>
    <project basedir=".." name="YourProjectName">
    <import file="../build.xml"/>
    <!-- TODO: edit the following target according to your needs -->
    <!-- (more info: http://www.netbeans.org/kb/55/freeform-config.html#debugj2se) -->
    <target name="debug-nb">
    <nbjpdastart addressproperty="jpda.address" name="NameOfProject" transport="dt_socket">
    <classpath path="ClasspathSpecifiedInYourRunTarget"/>
    </nbjpdastart>
    <java classname="MainClassSpecifiedInRunTarget" classpath="ClasspathSpecifiedInYourRunTarget" fork="true">
    <jvmarg value="-Xdebug"/>
    <jvmarg value="-Xnoagent"/>
    <jvmarg value="-Djava.compiler=none"/>
    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
    </java>
    </target>
    </project>

如果尚未映射运行目标,或者 IDE 无法确定项目的类路径或主类,则生成的调试目标会包括 "TODO" 占位符,您可以按以下示例填充这些值。

<?xml version="1.0" encoding="UTF-8"?>
    <project basedir=".." name="YourProjectName">
    <!-- TODO: edit the following target according to your needs -->
    <!-- (more info: http://www.netbeans.org/kb/55/freeform-config.html#debugj2se) -->
    <target name="debug-nb">
    <path id="cp">
    <!-- TODO configure the runtime classpath for your project here: -->
    </path>
    <nbjpdastart addressproperty="jpda.address" name="NameOfProject" transport="dt_socket">
    <classpath refid="cp"/>
    </nbjpdastart>
    <!-- TODO configure the main class for your project here: -->
    <java classname="some.main.Class" fork="true">
    <classpath refid="cp"/>
    <jvmarg value="-Xdebug"/>
    <jvmarg value="-Xnoagent"/>
    <jvmarg value="-Djava.compiler=none"/>
    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
    </java>
    </target>
    </project>

要指定运行时类路径,请将 pathelement 元素插入 path 元素内,并将它们指向包含类路径项的目录。例如,可以使用 pathelementlocation 属性来指定类路径项相对于项目目录的位置。项目目录通常是包含项目的 build.xml 文件的目录。下面是一个示例:

<path id="cp">
    <pathelement location="libs">  
    <pathelement location="build">
</path>

手动将目标映射到菜单项

在 IDE 为您生成某个目标时,IDE 会自动提供该目标与 IDE 命令的菜单项之间的映射。但是,如果手动创建目标,则还需要手动创建映射。

将“调试项目”命令映射到外部 Ant 脚本中的目标:

  1. 打开项目的 project.xml 文件,并将以下代码添加到 <ide-actions> 中:
      <action name="debug">
            <script>path_to_Ant_script</script>
            <target>target_name</target>
            </action> 
  2. 通过在 <context-menu> 目标中添加下面一行内容,可以将命令添加到项目节点的上下文菜单中:

      <ide-action name="debug"/>

    IDE 会将“调试项目”操作映射到项目 Ant 脚本中的指定目标。

疑难解答

如果成功创建了调试目标并且启动了调试器,但是调试器没有在断点处停止,则原因可能是 IDE 缺少调试信息或不清楚源文件的位置。有关详细信息,请参见关于调试自由格式项目

有关配置自由格式项目的完整指南,请参见:

另请参见
关于自由格式项目
为自由格式的 Web 项目创建调试目标
将 Ant 目标映射到 IDE 命令
在单独的 Ant 脚本中存储 IDE 目标

法律声明