JAVAFX: Mengendalikan Ralat "Lokasi tidak ditetapkan" Semasa Membungkus dengan JAR
Kod anda berjalan lancar dalam Eclipse, tetapi apabila dibungkus sebagai JAR dan dilaksanakan melalui cmd, ia menghadapi ralat "Lokasi tidak ditetapkan". Isu ini timbul kerana kaedah getClass().getResource(...) mengharapkan sumber, bukan laluan fail langsung.
Dalam Java, sumber ditakrifkan menggunakan hierarki pengecam Java yang sah yang dipisahkan dengan garis miring (/ ) dan nama sumber (shortname.extension). Apabila memuatkan kelas daripada sistem fail, ini sama dengan laluan fail. Walau bagaimanapun, apabila menggunakan mekanisme pemuatan kelas lain, adalah penting untuk mematuhi spesifikasi ini.
Menyelesaikan Ralat
Untuk membetulkan isu, gantikan kod semasa anda dengan yang berikut :
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sm/customer/CustomerHome.fxml"));
Pendekatan Alternatif: Lokasi Pengawal
Memandangkan fail FXML dan pengawal anda berada dalam pakej yang sama, anda boleh memanfaatkan lokasi pengawal untuk memuatkan FXML:
FXMLLoader loader = new FXMLLoader(CustomerHomeCtrl.class.getResource("CustomerHome.fxml"));
Kaedah ini lebih mantap dan memudahkan pemfaktoran semula masa hadapan, kerana pengkompil mengesahkan nama pakej secara automatik. Selain itu, sebarang perubahan pada struktur pakej boleh dikendalikan dengan lancar oleh Eclipse.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Lokasi tidak ditetapkan\' Semasa Membungkus Aplikasi JavaFX dengan JARS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!