【问题标题】:Import JavaFX 11 Maven project to Eclipse将 JavaFX 11 Maven 项目导入 Eclipse
【发布时间】:2019-07-20 08:04:09
【问题描述】:

有什么方法可以配置基于 Maven 的 JavaFX 项目,以便我可以在(vanilla)Eclipse 中导入该项目并像其他 Java/Maven 项目一样对其进行调试?

我习惯于使用 Maven 分发项目,通常,团队中的每个人(以及 CI 服务器)都可以依赖 Maven 进行打包、测试、运行等。 然而,为了调试,可以将项目导入 Eclipse 并通过主类启动(与 Eclipse 的 maven 插件相反)。 一个很好的例子是 Spring-Boot。导入这样一个项目后,我就可以运行或调试主类了。

然而,对于 JavaFX 11,这似乎可以编写一个配置所有必要依赖项的 pom.xml,但是当我将这样的项目导入 Eclipse(作为 Maven 项目)时,它并没有将其配置到我可以运行它的主类。我可以运行“Debug as..Maven build..”,但不能通过主类。我知道它依赖于特定于平台的依赖关系,但是如果它可以通过 Maven 启动,那么应该可以在不配置 Eclipse 的情况下从 Eclipse 启动它,不是吗?

【问题讨论】:

    标签: java maven javafx


    【解决方案1】:

    我一直在将 Eclipse 与 Maven 项目一起使用,就像您一直希望在 JFX11 中使用它一样。如果您正确调整启动配置,它可以正常工作。详情可以在这里找到:https://openjfx.io/openjfx-docs/

    到目前为止,让这个运行最简单的方法是忽略模块系统,并确保所有库(也包括 JFX 库)最终都在类路径上,而不是模块路径上(如果你没有,这是默认的)项目中的任何 module-info.java)。然后将这样的一行代码添加到包含主类的文件中。

    class MyJFX11AppLauncher {public static void main(String[] args) {MyJFX11App.main(args);}}
    

    在 Eclipse 启动配置中,确保通过这个新的启动器类启动您的应用程序。这样就可以在没有大量运行时选项的情况下运行 JavaFX 应用程序,否则您需要这些选项才能使所有这些工作正常进行。 (请参阅上面的文档。)

    警告!这不是启动 JavaFX 应用程序的官方方式,但它适用于我,我从未注意到它有任何问题。使用风险自负!

    【讨论】:

    • 这太棒了。而且很奇怪。我所要做的就是添加一个带有调用 Application 类主方法的主方法的 Launcher 类。我很想知道为什么这会有所不同。
    • 这是必需的,因为 JDK 中有一些显式代码会在 Main 类派生自 Application 时检查模块路径上是否存在 JavaFX。启动器不是从 Application 派生的,因此测试通过。当您让 Maven 启动您的应用程序时,也会发生同样的情况。
    猜你喜欢
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2022-01-08
    • 2020-04-03
    • 2017-08-13
    • 2013-03-27
    相关资源
    最近更新 更多