Rumah  >  Artikel  >  Java  >  Mengapa getClass().getResource() Gagal Apabila Berjalan dari Baris Perintah?

Mengapa getClass().getResource() Gagal Apabila Berjalan dari Baris Perintah?

DDD
DDDasal
2024-11-07 00:50:03775semak imbas

Why Does getClass().getResource() Fail When Running from the Command Line?

Pemuatan Fail oleh getClass().getResource()

Kaedah getClass().getResource() boleh digunakan untuk memuatkan fail sumber . Apabila digunakan daripada persekitaran pembangunan seperti Eclipse, kaedah ini biasanya berfungsi dengan lancar. Walau bagaimanapun, menjalankan aplikasi daripada baris arahan kadangkala boleh mengakibatkan pengecualian penuding nol.

Isu ini timbul kerana getClass().getResource() menggunakan pemuat kelas untuk mendapatkan semula sumber. Untuk boleh diakses, sumber mesti disertakan dalam laluan kelas. Apabila menggunakan Eclipse, folder sumber dan semua komponennya, termasuk fail sumber, diletakkan dalam laluan kelas secara lalai. Oleh itu, sumber boleh dimuatkan daripada pakej atau direktori yang sama dengan kelas.

Sebaliknya, apabila melaksanakan daripada baris arahan, laluan kelas tidak dikonfigurasikan secara automatik. Fail atau direktori yang mengandungi sumber mesti ditambah secara eksplisit pada laluan kelas. Satu kaedah untuk mencapai ini adalah dengan menetapkan pembolehubah persekitaran CLASSPATH kepada laluan fail atau direktori.

Adalah penting untuk ambil perhatian bahawa menggunakan FileInputStream secara langsung seperti yang ditunjukkan dalam kod tidak disyorkan untuk memuatkan sumber. Sebaliknya, gunakan getResourceAsStream() untuk mendapatkan InputStream. Ini memastikan keserasian apabila digunakan sebagai fail JAR atau memuatkan kelas melalui rangkaian.

Selain itu, kaedah getResource() membolehkan anda menentukan lokasi sumber berbanding dengan pakej kelas. Contohnya:

Foo.class.getResourceAsStream("Test.properties")

Memuatkan Test.properties daripada pakej yang sama seperti Foo.

Foo.class.getResourceAsStream("/com/foo/bar/Test.properties")

Memuatkan Test.properties daripada pakej com.foo.bar.

Dengan mematuhi garis panduan ini, anda boleh berjaya memuatkan fail sumber menggunakan getClass().getResource() semasa menjalankan anda aplikasi daripada baris arahan.

Atas ialah kandungan terperinci Mengapa getClass().getResource() Gagal Apabila Berjalan dari Baris Perintah?. 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