JavaFX 遺漏執行此應用程式所需的 javafx 程式實際執行元件 解決方法

JavaFX 遺漏執行此應用程式所需的 javafx 程式實際執行元件 解決方法

錯誤問題

IDE: IntelliJ

Java 版本: Java 11.0.9

pom.xml

<!-- 略過 -->

    <dependencies>
        <dependency>
          <groupId>org.openjdk</groupId>
          <artifactId>javafx-controller</artifactId>
          <version>11.0.2</version>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>


<!-- 略過 -->

MyFxApp.java

package com.example;

import javafx.application.Application;
import javafx.stage.Stage;

public class MyFxApp extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("My First JavaFX App");
      
        stage.show();
    }

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

可以看到這是再正常不過了的 maven 專案,可是我在運行 MyFxApp 的 main() 方法的時候,會出現這樣的錯誤:

錯誤: 遺漏執行此應用程式所 需的 javafx 程式實際執行元件
Error: JavaFX runtime components are missing, and are required to run this application


解決方法

經過了一些網路上的調研,看起來是我的專案內缺少了 module-info.java 定義,只要創建好 module-info.java 就可以了。

創建 module-info.java

module-info.java

module first.fx { // <- module 名稱請跟著自己的專案名稱改變
    requires javafx.controller;

    opens com.example; // <- package 請跟著自己的專案結構改變
}

加入再執行一次,就可以囉!


有時候 javafx.controller 會引入成 javafx.graphics 這兩個有什麼差別呢?

其實我也沒有搞得很清楚,只是 javafx.graphics 會沒辦法引入 Lable、Button … 一些常用元件,可以的話就用 javafx.controller 吧!

wayne

No Comment

Leave a Reply

Your email address will not be published.

文章分類