首页 > 解决方案 > 如何使用 Eclipse IDE 调试基于 JavaFX 11 的 Maven 项目 (2019-03)

问题描述

问题:我无法调试基于 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();
     }
}

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

此处和上面提到的问题的底部附近提出了一个解决方案,但它们都需要一种与 OpenFX 建议的非常不同的启动方法。

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

标签: eclipsemavenjavafx

解决方案


我仍然不明白为什么人们让事情变得如此复杂。即使使用最新的 JDK 和 JFX,只需创建运行配置即可在 Eclipse 中运行或调试程序的旧方法仍然很有效。(我对两者都使用 15 EA)。只有两个简单的步骤。

在上面的示例文件末尾添加以下代码行。这将允许您完全忽略所有模块系统的废话。

...

class HowdyJFXLauncher {public static void main(String[] args) {HowdyJFX.main(args);}}

在 Eclipse 包资源管理器中选择类并右键单击它。在上下文菜单中选择“调试为”,然后在以下选项菜单中选择上面介绍的启动器而不是主程序,然后单击确定。这将像往常一样在调试器中启动程序。这适用于没有任何插件或其他东西的 Maven 和非 Maven 程序。如果您有 module-info.java,请将其删除。在这种情况下,您可能必须重建您的项目,以便正确设置类路径。

我每天都以这种方式工作,并且总是想知道为什么人们让事情变得如此复杂。


推荐阅读