JavaFX: Menyelesaikan masalah Ralat "Lokasi Tidak Ditetapkan" dalam Pelaksanaan Fail Jar
Semasa pelaksanaan fail jar JavaFX, pengguna mungkin menghadapi ralat "Lokasi tidak ditetapkan". Artikel ini bertujuan untuk menangani isu ini, terutamanya dalam senario di mana kod berjalan dengan betul dalam Eclipse.
Definisi Masalah
Apabila mencipta fail jar daripada projek dengan yang khusus struktur folder dan melaksanakannya melalui baris arahan, ralat "Lokasi tidak ditetapkan" dipaparkan. Struktur direktori projek termasuk fail FXML dan pengawal yang disusun dalam pakej tertentu.
Analisis Sebab
Punca ralat terletak pada cara sumber dimuatkan menggunakan getClass( ).getResource(...). Kaedah ini menjangkakan laluan sumber yang mematuhi konvensyen pengecam Java. Walau bagaimanapun, dalam kod yang disediakan, laluan sumber mengandungi .., yang bukan pengecam yang sah. Akibatnya, sumber tidak dapat diselesaikan apabila fail jar dilaksanakan.
Penyelesaian 1: Memastikan Laluan Sumber yang Betul
Untuk menyelesaikan isu, ubah suai laluan sumber untuk memastikan ia mengikut konvensyen pengecam Java. Contohnya:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sm/customer/CustomerHome.fxml"));
Penyelesaian 2: Memanfaatkan Lokasi Pengawal untuk Pemuatan FXML
Dalam kes di mana fail dan pengawal FXML disusun dalam pakej yang sama, adalah mungkin untuk menggunakan lokasi pengawal untuk pemuatan FXML. Ini menghapuskan keperluan untuk menentukan laluan mutlak ke fail FXML:
FXMLLoader loader = new FXMLLoader(CustomerHomeCtrl.class.getResource("CustomerHome.fxml"));
Faedah Menggunakan Lokasi Pengawal
Menggunakan lokasi pengawal menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Mengapa Aplikasi JavaFX Saya Melemparkan Ralat 'Lokasi Tidak Ditetapkan' Apabila Menjalankan dari Fail Jar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!