繁体   English   中英

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

[英]How to debug Maven project based on JavaFX 11 using Eclipse IDE (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 建议的非常不同的启动方法。

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

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

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

...

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

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

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

您可以通过将以下内容添加到 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>

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

干净的javafx:运行

在此处输入图片说明

在这之后你应该看到

侦听地址为 8001 的传输 dt_socket

在控制台中

在此之后,您需要在端口 8001 上启动调试在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM