Hỏi về tạo file jar của ứng dụng Javafx trong Intellij Idea

Chào mọi người, em có tạo một ứng dụng Javafx bằng Intellij Idea có cấu trúc thư mục: (code này được IDE tự động tạo khi tạo project nên không sai)

Cấu hình artifact như hình này:

Tuy nhiên sau khi build artifact, chạy file jar thì bị báo lỗi:
Error: JavaFX runtime components are missing, and are required to run this application.

Em có thử sửa lại VM options:

Tuy nhiên file jar chỉ chạy được khi Run bằng Intellij Idea, khi chạy bằng cmd hoặc click chuột vào file jar thì vẫn bị lỗi: Error: JavaFX runtime components are missing, and are required to run this application.

Mong mọi người giúp đỡ, em xin cảm ơn.

Lỗi này có vì JDK9+ đã bỏ java fx khỏi JDK cậu ạ.

Cậu có 3 cách để sửa lỗi này.

  1. Downgrade xuống JDK 8.
  2. Thêm VM option như cậu làm. Command line của nó nên như thế này:
java -jar myJar.jar --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml
  1. Modularize app của cậu (tính năng của jdk9+).
    Cậu thêm code này vào module-info.java ở root directory của các class (hay package root của cậu).
module my.project {
    requires javafx.fxml; // access tới component. Giống với --add-module khi cậu truyền vào VM
    requires javafx.controls;

    opens my.project to javafx.graphics; // cho phép javajx access tới code của cậu ở phạm vi reflective (javafx dùng reflection rất nhiều)

    exports my.project; // cho phép các module khác dùng module của cậu
}

Thử xem nhé cậu!

5 Likes

cậu ơi thế nếu dùng kết nối đến cơ sở dữ liệu của mình thì có thể đóng gói được không

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?