当前位置: 首页 > 知识库问答 >
问题:

如何使用JDK 11/Maven/Eclipse IDE运行JavaFX应用程序

韩麒
2023-03-14

问题:从Eclipse IDE运行基于Maven非模块项目(project name=“howdyJFX”)的JavaFX应用程序会生成以下编译错误:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project howdyjfx: The parameters 'mainClass' for goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java are missing or invalid.

开发环境和配置:

    null
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.spindotta.jfx11.testbed</groupId>
    <artifactId>howdyjfx</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>13-ea+8</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>13-ea+8</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!-- http://maven.apache.org/plugins/maven-compiler-plugin/ -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.2</version>

                <configuration>
                    <!-- Is this necessary? The 'Run' configuration goals are "clean exec:java" -->
                    <executable>C:\Program Files\Java\jdk-11.0.3\bin\java</executable>

                    <!-- Workaround to short-circuit jdk1.8 which is needed to run Eclipse 
                        but is toxic for jdk11 and higher -->
                    <options>
                        <option>-Djava.library.path=C:\tmp</option>
                    </options>

                    <!-- Main class - is this correct? -->
                    <mainClass>com.spindotta.jfx11.testbed.howdyjfx.HowdyJFX</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
    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();
         }
    }

上面的配置和代码是基于“入门”指南和Sr.Jose Pereda的Github帖子,以及对去年9月提出的类似问题的回答。然而,不管出于什么原因,我不能让这个工作。这更令人沮丧,因为我正在完成一个大量的JFX控件库,这些控件编译时没有任何问题(使用JDK11和JavaFX11),并且在场景构建器中工作良好(除了一些与此处无关的场景构建器问题)。

提前感谢您提出的任何有用的建议!

共有1个答案

柳羽
2023-03-14

pom文件中的配置是正确的,但是javafx-maven-plugin 部分中的主类规范是错误的。在“入门”指南和有关Github repo的材料中,Mainclass的名称是'org.openjfx.hellofx.app,它是 加上 加上简单类名的组合。因为我的项目的 分别是com.spindotta.jfx11.testbedhowdyjfx,所以我将它们与简单类名howdyjfx组合在一起。这是不正确的,因为项目具有标准的Maven配置source/main/java和顶级文件夹howdyjfx。在插件中指定howdyjfx/howdyjfx作为mainclass解决了这个问题。

就其价值而言,在 中为javafx-maven-plugin指定的项是必不可少的;省略any将生成错误。应该可以在run configurations->JRE选项卡->VM arguments中指定这些值,不过我发现在POM中使用模板更容易处理这些值。

感谢Jose Pereda澄清了目标中的一个问题,该目标必须在运行配置中为启动指定。

现在又出现了一个问题。我需要能够调试通过入门指南和Github Repo中建议的方法启动的JavaFX应用程序。我在主类HowdyJFX中分配变量的第一行设置了一个Eclipse断点,这样应用程序就会在该点停止,但这并没有发生。相反,应用程序运行时就好像断点不在那里一样。这是一个不同于手头的问题,并在其他地方提出。

 类似资料:
  • 作为一个软件开发人员,我需要做哪些步骤来允许我的JavaFX应用程序与JDK11+一起运行?有什么好的广告吗?是否可以通过Gradle获得OpenJDK?

  • 我是JavaFX新手。我使用Maven创建了一个Hello World项目。当我在Eclipse中运行时,它工作得很好。 当我试图使用build.fxbuild构建应用程序时,我得到了这个错误。

  • 问题内容: 我是一个初学者,现在我想用java启动GUI应用程序。我开始阅读一些有关FX的书籍,但并未在JDK11上编译..我是否需要使用jdk8还是有什么办法可以在jdk11上完成? 问题答案: JavaFX已脱离JDK11(Oracle的官方JDK和OpenJDK)的捆绑。为了将JavaFX与JDK11结合使用,您必须下载独立的JavaFX11运行时。

  • 我有一个用Java 8编译的可执行jar文件,其中包含一个名为< code>app.jar的JavaFX应用程序。 当我安装了Java8时,我可以简单地用运行它。 现在我只安装了Java 11,运行上面的命令会产生以下错误: 因为Java 11不再包含JavaFX。 所以我考虑安装JavaFX。openjfx.org以两种形式提供JavaFx:SDK和JMOD文件。 我认为我不需要SDK,因为我不

  • 例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运

  • 我正在学习使用Maven在Eclipse中构建Java项目。我从文件夹中的“maven archetype quickstart”模板创建了一个Java项目。然后,为了将Maven项目转换为支持EclipseIDE,我导航到项目文件夹并发出命令: 和。 然后我在Eclipse中导入了该项目,并进行了必要的Eclipse配置,比如在Eclipse类路径中设置Maven本地存储库。现在,该项目位于文件