【问题标题】:Getting error: "JavaFX runtime components are missing, and are required to run this application" when trying to launch my javaFX application尝试启动我的 javaFX 应用程序时出现错误:“缺少 JavaFX 运行时组件,需要运行此应用程序”
【发布时间】:2019-04-01 10:59:39
【问题描述】:

我正在尝试使用 Maven 使用 Java 11 创建 JavaFX 项目。我在 POM 文件中添加了依赖项,但是当我尝试运行应用程序时出现错误:

JavaFX runtime components are missing, and are required to run this application.

如果我使用 Java 8 SE 运行应用程序,它会启动并正常运行。

我查看了其他 SO 帖子,但找不到解决方案。我尝试创建新的主文件,然后调用 Application(myApplicationClass.class, args)

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

然后我得到这个错误:

Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMethodError: <init>
    at com.sun.glass.ui.win.WinApplication.staticScreen_getScreens(Native Method)
    at com.sun.glass.ui.Screen.initScreens(Screen.java:412)
    at com.sun.glass.ui.Application.lambda$run$1(Application.java:152)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:834)
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
    at com.sun.prism.d3d.D3DPipeline.getAdapterOrdinal(D3DPipeline.java:205)
    at com.sun.javafx.tk.quantum.QuantumToolkit.assignScreensAdapters(QuantumToolkit.java:695)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:313)
    at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.java:258)
    at com.sun.glass.ui.Application.lambda$run$1(Application.java:153)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:834)

这是我的 Launcher 类:

public class Launcher extends Application {

   public static void main(String[] args) {
       launch(args);
   }

   @Override
   public void start(Stage primaryStage) {
       Scene rootScene = new MainMenu();
       AppContext.init(primaryStage, rootScene);

       primaryStage.setResizable(false);
       primaryStage.show();
   }

这是我的 POM.xml

...
<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <release>11</release>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.6.0</version>
        <executions>
          <execution>
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>hr.fer.zemris.gui.Main</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>11-ea+24</version>
    </dependency>
  </dependencies>
</project>

【问题讨论】:

  • 第一种情况下如何运行应用程序?来自 Eclipse(如 Java 应用程序)还是来自 Maven(mvn compile exec:java)?对于第二个错误,请编辑您的问题并发布启动器类。
  • 我两次都是从 Eclipse 运行的。我添加了第二个错误的代码。
  • 从 Eclipse 运行您必须配置模块路径选项。见openjfx.io/openjfx-docs/#IDE-Eclipse。启动器错误,请参阅NewMain 以获取有效的启动器类。

标签: eclipse maven javafx java-11


【解决方案1】:

我在使用 OpenJDK 12 版和 Oracle JDK 12 版时遇到了同样的问题。

作为临时解决方案,我恢复到 Oracle JDK 版本 8。这消除了错误。

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 2022-01-17
    • 2021-07-02
    • 2020-04-20
    • 2019-02-07
    • 2021-08-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多