如何使用Eclipse IDE调试基于JavaFX 11的Maven项目(2019-03)

jfr*_*jfr 5 eclipse javafx maven

问题:我无法调试基于 JavaFX 11 的 Maven 项目,该项目是使用 Eclipse IDE 2019-03 (4.11.0) 编写和启动的,使用此处建议的方法并在相关问题中使用

示例代码:

public class HowdyJFX extends Application {

     @Override
     public void start(Stage primaryStage) throws Exception {
          final String javaVersion = System.getProperty("java.version");
          final String javafxVersion = System.getProperty("javafx.version");
          final Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
          final Scene scene = new Scene(new StackPane(l), 640, 480);
          primaryStage.setScene(scene);
          primaryStage.show();
      }

     public static void main(String[] args) {
         launch();
     }
}
Run Code Online (Sandbox Code Playgroud)

如果我设置Eclipse断点处的第一行start()方法(其中一个变量被分配),应用程序应该停止在该点,这并运行发生; 相反,应用程序继续运行,就好像断点不存在一样。

在此处上面提到问题的底部附近建议一种解决方案,但是这些都需要一种与OpenFX 建议的非常不同的启动方法。

在此先感谢您提供任何有用的提示!

Jun*_*ook 0

您可以通过将以下内容添加到 pom.xml 文件来调试 javafx 应用程序

<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>be.canguru.Main</mainClass>
                    </configuration>
                </execution>
                <execution>
                    <!-- Configuration for debugging -->
                    <id>debug</id>
                    <configuration>
                        <options>
                            <option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8001</option>
                        </options>
                        <mainClass>be.canguru.Main</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

在此之后运行 Maven 运行带有目标的配置

干净的javafx:运行

在此输入图像描述

之后你应该看到

监听地址为 8001 的传输 dt_socket

在控制台中

之后您需要在端口 8001 上启动调试 在此输入图像描述

这应该启动您的应用程序并在调试断点处停止