Pemuatan Fail Menggunakan getClass().getResource()
Apabila bekerja dengan fail sumber, seperti fail harta benda, pendekatan biasa ialah menggunakan getClass().getResource(path) untuk memuatkannya. Walau bagaimanapun, perbezaan timbul apabila melaksanakan kod daripada baris arahan berbanding dalam IDE seperti Eclipse.
Kelakuan dalam Eclipse
Dalam Eclipse, getClass().getResource(). laluan) dengan berkesan memuatkan fail daripada folder sumber. Jika fail sumber (cth., Test.properties) diletakkan dalam pakej yang sama dengan fail Java, ia boleh diakses dalam Eclipse tanpa sebarang isu.
Isu dengan Arahan Baris Perintah
Apabila menggunakan aplikasi di luar Eclipse menggunakan baris arahan, fail sumber mungkin tidak terdapat dalam laluan kelas. Akibatnya, getClass().getResource(path) akan gagal memuatkan fail, mengakibatkan pengecualian penuding nol.
Penyelesaian
Untuk menyelesaikan isu ini, pastikan bahawa fail sumber disertakan dalam classpath. Ini boleh dicapai dengan meletakkan fail dalam direktori yang sama dengan fail kelas yang disusun atau dengan membungkusnya ke dalam fail JAR.
Pendekatan Alternatif
Daripada menggunakan getClass ().getResource(path), pertimbangkan untuk menggunakan getClass().getResourceAsStream(path) untuk mencipta InputStream untuk fail sumber. Kaedah ini mengelakkan keperluan untuk menukar URI kepada Fail dan mengendalikan pemuatan fail daripada pelbagai sumber, seperti sistem fail, fail JAR atau melalui rangkaian.
Akhir sekali, berhati-hati dengan hujah yang dihantar kepada kaedah getClass().getResourceAsStream. Menggunakan Foo.class.getResourceAsStream("Test.properties") akan memuatkan fail daripada pakej yang sama seperti Foo, manakala Foo.class.getResourceAsStream("/com/foo/bar/Test.properties") akan memuatkan fail daripada pakej yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Fail Sumber dari Baris Perintah Menggunakan `getClass().getResource()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!