JavaFX "Lokasi Diperlukan" Ralat Walaupun Berada dalam Pakej Yang Sama
Penerangan Isu:
Melaksanakan program JavaFX boleh mengakibatkan ralat "java.lang.NullPointerException: Lokasi diperlukan", walaupun fail FXML berada dalam pakej yang sama dengan kelas Aplikasi.
Punca Asas:
Ralat berlaku apabila FXMLLoader cuba memuatkan fail FXML menggunakan getClass().getResource(). Dalam persekitaran projek Maven, pendekatan ini mungkin gagal jika konfigurasi modul Maven tidak betul atau tetapan laluan kelas tersalah konfigurasi.
Betulkan dengan ClassLoader:
Untuk menyelesaikan isu dalam Maven , gunakan getClass().getClassLoader().getResource() untuk mencari fail FXML. Kaedah ini mendapatkan semula sumber daripada laluan kelas projek semasa, memastikan bahawa Maven boleh menyelesaikan lokasinya dengan betul.
Kod Diubah Suai:
Ganti getClass().getResource() dengan getClass().getClassLoader().getResource() dalam baris berikut:
<code class="java">Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));</code>
<code class="java">Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("main.fxml"));</code>
Pertimbangan Maven Tambahan:
Untuk projek Maven, pastikan bahawa modul Maven yang sepadan dikonfigurasikan dengan betul kerana sumber adalah penting. Pembungkusan dan kebergantungan yang betul adalah penting untuk mengelakkan konflik dan salah konfigurasi.
Atas ialah kandungan terperinci Mengapa JavaFX Melemparkan Ralat 'Lokasi Diperlukan' Walaupun Fail FXML berada dalam Pakej yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!