如何在 IntelliJ 中调试 Maven OpenJFX 应用程序

How to debug a Maven OpenJFX application in IntelliJ

由于 JavaFX 已成为 OpenJFX 并且需要作为依赖项添加到您的 Maven 项目中,因此调试 OpenJFX 应用程序变得很复杂。在 it is already answered how to solve it for NetBeans. But IntelliJ works slightly different. The Ppom.xml has been setup according to this example.

如何在 IntelliJ 中 运行 在调试模式下将 OpenJFX (JavaFX) 应用程序配置为 Maven 项目?

如果您要复制 pom.xml 中为 javafx-maven-plugin 添加的 VM 选项,如 所示,您可以 运行 使用 'mvn javafx:run@debug' 的应用程序] 然后通过转到菜单 'Run - Attach to process...' 和 select 您的应用程序将其手动附加到 IntelliJ 调试器。

但是,如果你想一键启动调试器和应用程序,IntelliJ 就麻烦了。您可以创建一个远程调试配置,它首先以串行方式启动您的应用程序和调试器。或者具有并行执行两者的复合配置。问题是让它们同步。

我找到了以下解决方案。将您的应用程序 运行 作为调试客户端,将 IntelliJ 调试器作为服务器。 pom.xml 文件中 javafx-maven-plugin 的 VM 选项应该有 'server=n':

        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.4</version>
            <executions>
                <execution>
                    <!-- Default configuration for running -->
                    <id>default-cli</id>
                    <configuration>
                        <mainClass>org.waninge.test.JFXTest</mainClass>
                    </configuration>
                </execution>
                <execution>
                    <!-- Configuration for debugging -->
                    <id>debug</id>
                    <configuration>
                        <options>
                            <option>-agentlib:jdwp=transport=dt_socket,server=n,address=localhost:8000,suspend=y</option>
                        </options>
                        <mainClass>org.waninge.test.JFXTest</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>

在 'Command line' 中使用 'javafx:run@debug' 在 IntelliJ 中创建 Maven 运行 配置。 使用以下设置创建远程 运行 配置:

  • 调试器模式:'Listen to remote JVM';
  • 交通工具:'Socket';
  • 主机:如 pom
  • 端口:如 pom

现在远程运行 配置将启动调试服务器等待客户端。 Maven 运行 配置将连接到调试服务器,如果调试服务器不在线则失败。

现在,要通过单击开始一切,您可以创建一个复合 运行 配置并向其中添加 Maven 和远程 运行 配置。启动此配置将同时启动两者,您可以调试您的应用程序。