Summary: GraalVM native-image reports the following error when compiling a simple JavaFX application:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
Error: Image build request failed with exit status 1
Command line used: "%GRAAL_BIN%"\native-image.cmd --module-path "c:\eclipse-javafx-sdk-19\lib" --add-modules javafx.controls,javafx.fxml,. -cp . application.GraalvmFX
Details:
Simple JavaFX application
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Separator;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
public class GraalvmFX extends Application {
@Override
public void start(Stage primaryStage) {
try {
ToolBar toolbar = new ToolBar();
Button b1 = new Button("New");
Button b2 = new Button("Open");
Button b3 = new Button("Save");
Button b4 = new Button("Exit");
toolbar.getItems().addAll(b1, b2, b3, new Separator(), b4);
BorderPane root = new BorderPane();
root.setTop(toolbar);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Running this app using command line:java.exe or javac.exe is not an issue:
C:\eclipse-workspace2\graalvmFX\src>java --version
java 17.0.4.1 2022-08-18 LTS Java(TM) SE Runtime Environment (build 17.0.4.1+1-LTS-2) Java HotSpot(TM) 64-Bit Server VM (build 17.0.4.1+1-LTS-2, mixed mode, sharing)
C:\eclipse-workspace2\graalvmFX\src>javac --module-path "C:\eclipse-javafx-sdk-19\lib" --add-modules javafx.controls,javafx.fxml -cp . application\GraalvmFX.java
C:\eclipse-workspace2\graalvmFX\src>java --module-path "C:\eclipse-javafx-sdk-19\lib" --add-modules javafx.controls,javafx.fxml -cp . application.GraalvmFX
But trying to compile the app using native-image fails:
C:\eclipse-workspace2\graalvmFX\src>"%GRAAL_BIN%"\native-image.cmd --version
GraalVM 22.2.0 Java 17 CE (Java Version 17.0.4+8-jvmci-22.2-b06)
C:\eclipse-workspace2\graalvmFX\src>"%GRAAL_BIN%"\native-image.cmd --module-path "c:\eclipse-javafx-sdk-19\lib" --add-modules javafx.controls,javafx.fxml application.GraalvmFX
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
Error: Image build request failed with exit status 1
I have tried everything that I can think of!