Rumah >Java >javaTutorial >Bagaimana untuk Memuatkan Fail Sumber dari Baris Perintah Menggunakan `getClass().getResource()`?

Bagaimana untuk Memuatkan Fail Sumber dari Baris Perintah Menggunakan `getClass().getResource()`?

DDD
DDDasal
2024-11-06 17:00:031052semak imbas

How to Load Resource Files from the Command Line Using `getClass().getResource()`?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn