在 NetBeans 使用 JavaFX 時,常遇到如下錯誤 Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.fxml not found 表示啟動層初始化時 Java 執行環境無法找到 javafx.fxml 模組。 這可能是由於 NetBeans 模組路徑的設定錯誤 或 根本未安裝模組所致。 以下為診斷和解決這個問題的步驟。 1.檢查 JavaFX SDK 安裝 及 NetBeans 設定正確否 依據如下提示逐項檢查: how to set up NetBeans environment for JavaFX applications 2.打開 NetBeans 列印 Ant 腳本功能 依據如下設定選項 Tools/Options/Java/Ant 或者 NetBeans/Settings... Ant Home: ... [v] Always Show Output Verbosity Level: Quiet/Normal/[Verbose]/Debug 即可在執行 Run File 時,於 Output 視窗 觀看Ant Target (build.xml) Output 3.檢查 NetBeans 執行 Ant run 腳本的參數填對否 核對如下重要 java 執行參數 run: Executing '/path/to/bin/java' with arguments: '-Dfile.encoding=UTF-8' '--add-modules' 'javafx.controls,javafx.fxml,javafx.media' '-classpath' '/path/to/javafx-sdk-xx/lib/javafx-swt.jar: /path/to/javafx-sdk-xx/lib/javafx.base.jar: /path/to/javafx-sdk-xx/lib/javafx.controls.jar: /path/to/javafx-sdk-xx/lib/javafx.fxml.jar: /path/to/javafx-sdk-xx/lib/javafx.graphics.jar: /path/to/javafx-sdk-xx/lib/javafx.media.jar: /path/to/javafx-sdk-xx/lib/javafx.swing.jar: /path/to/javafx-sdk-xx/lib/javafx.web.jar: /path/to/MyProject/build/classes' '--module-path' '/path/to/MyProject/build/classes: /path/to/javafx-sdk-xx/lib/javafx-swt.jar: /path/to/javafx-sdk-xx/lib/javafx.base.jar: /path/to/javafx-sdk-xx/lib/javafx.controls.jar: /path/to/javafx-sdk-xx/lib/javafx.fxml.jar: /path/to/javafx-sdk-xx/lib/javafx.graphics.jar: /path/to/javafx-sdk-xx/lib/javafx.media.jar: /path/to/javafx-sdk-xx/lib/javafx.swing.jar: /path/to/javafx-sdk-xx/lib/javafx.web.jar' 'MyJavaFXApp' 4.任何一處 Ant run 腳本的參數有缺,可對應到如下 NetBeans 設定有誤: Project Properties Libraries/ Java Platform: JDK xx (Default) Compile/Compile-time Libraries: Classpath: JavaFX yy Run/Run-time Libraries: Modulepath: JavaFX yy Run/ Configuration: <default config> VM Options: --add-modules javafx.controls,javafx.fxml,javafx.media 註1: 其實 Ant build 及 run 腳本的工作原理就是由 NetBeans 設定抽取相關參數, 組合成如下命令列編譯及執行指令。故執行有問題可找回相關設定哪裏出問題。 命令列編譯指令 > javac -classpath "...\javafx-sdk-xx\lib\javafx.fxml.jar;...;." \ MyJavaFXApp.java 命令列執行指令 > java --add-modules javafx.controls,javafx.fxml,javafx.media \ -classpath . \ --module-path "...\javafx-sdk-xx\lib\javafx.fxml.jar;..." \ MyJavaFXApp 註2: NetBeans 執行 Ant run 腳本時,依序參考如下檔案 MyProject/ build.xml nbproject/ build-impl.xml project.properties 其中,project.properties有專案屬性如下,存放設定執行參數,亦可對照檢視設定錯誤原因。 run.classpath=\ ${javac.classpath}:\ ${build.classes.dir} run.jvmargs=--add-modules javafx.controls,javafx.fxml,javafx.media run.modulepath=\ ${javac.modulepath}:\ ${libs.JavaFX_xx.classpath}
2024年12月11日 星期三
Diagnosing the Error: Module javafx.fxml not found
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言