繁体   English   中英

使用运行/调试配置在 IntelliJ IDEA 中运行 JavaFX 11 Maven 项目

[英]Run a JavaFX 11 Maven project in IntelliJ IDEA using a run/debug configuration

我想使用运行/调试配置从 IntelliJ IDEA使用 Maven运行HelloWorld JavaFX 11 应用程序,以便能够调试应用程序。

我在 IntelliJ IDEA 中使用pom.xmlHelloFX.java创建了一个 Maven 项目。 我可以成功构建项目并运行它执行指定的compileexec:java目标。

但是,当我使用带有 VM 选项--add-modules=javafx.controls的运行/调试配置运行它时,我得到:

启动层初始化时出错
java.lang.module.FindException:未找到模块 javafx.controls

我设法运行它的唯一方法是下载JavaFX 运行时并将 VM 选项设置为--module-path /path/to/javafx-sdk-11/lib --add-modules=javafx.controls

但是有没有办法使用从 Maven 下载的工件来运行它? 正如我所认为的,IntelliJ IDEA 可以在运行时使用 Maven 工件。 还是我只是弄错了什么?

PS 我知道这个答案,但它没有描述我想要做什么。

我想我可能终于找到了解决方案。

我假设您正在使用 Maven 来导入 javafx-maven-plugin 以及 javafx-controls 依赖项,就像我试图做的一样(最终,jona303 的答案没有修复),并且您已经尝试使用 javafx:ru​​n 运行它时遇到问题/烦恼。

嗯,不使用 --add-exports 和其他东西的解决方案实际上相当简单。 使用适当的基于 Java 的 main 方法创建一个额外的类(我称之为“启动器”)。 然后,在课堂上,从那里启动您的应用程序,如下所示:

启动器类

public class Launcher {

    public static void main(String[] args) {
        Application.launch(App.class, args);
    }

}

应用类

public class App extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        // app code
    }

}

我很确定这个问题是由 IntelliJ 试图变得“智能”引起的,并在没有 main 方法的情况下启动应用程序,直接跳转到 start 方法。 但是通过这样做,它以某种方式避免了添加 Maven 依赖项并导致它失败。 当你这样做时,它会强制 IntelliJ 说“好吧,我们需要 maven 依赖项,然后我们可以运行它”,正确启动它(因为它不知道它是一个 JavaFX 项目)。 但这只是一个猜测。 我只知道它对我有用。

我花了很长时间才弄清楚这一点,但是一旦我将运行配置设置为使用我的 Launcher 类而不是我的 App 类启动,一切都像魅力一样无缝地工作(甚至调试工作!)。

希望这会有所帮助,并祝您编码愉快! :)

如果重点只是使用运行/调试按钮,您可以使用 Maven 配置用于 IntelliJ JavaFX 运行的 maven 配置

暂无
暂无

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

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