Rumah > Java > javaTutorial > teks badan

Mengapa imej saya dimuatkan dengan ImageIcon tetapi tidak dengan getClass().getResource()?

Linda Hamilton
Lepaskan: 2024-11-10 11:57:02
asal
382 orang telah melayarinya

Why is my image loading with ImageIcon but not with getClass().getResource()?

Memahami Pemuatan Sumber dengan getClass().getResource()

Di Java, mengakses sumber seperti imej memerlukan kaedah khusus. Satu pendekatan yang biasa digunakan ialah kaedah getClass().getResource(). Kaedah ini membenarkan pembangun untuk mendapatkan semula sumber daripada classpath, tetapi ia berbeza daripada mengakses terus fail daripada sistem fail.

Seperti yang dinyatakan dalam soalan, cubaan memuatkan imej menggunakan getClass().getResource() menghasilkan null imgURL, menunjukkan kegagalan. Walau bagaimanapun, menyatakan laluan secara eksplisit dalam pembina ImageIcon berjaya memuatkan imej. Percanggahan ini timbul kerana getClass().getResource() mencari sumber dalam classpath, bukan dalam sistem fail setempat.

Classpath ialah koleksi direktori dan fail JAR yang mengandungi kelas Java yang disusun dan sumber lain yang diperlukan untuk permohonan. Apabila aplikasi Java dijalankan, pemuat kelas mencari sumber dalam laluan kelas menggunakan laluan yang ditentukan.

Untuk menggunakan getClass().getResource() dengan berkesan, adalah penting untuk memahami sifat laluan kelas. Laluan kelas boleh diubah suai melalui pembolehubah persekitaran classpath atau pilihan -cp apabila melancarkan aplikasi Java. Jika sumber yang dimuatkan berada dalam direktori di luar classpath, ia tidak akan ditemui menggunakan getClass().getResource().

Untuk membuat kesimpulan, sebab imej tidak dapat dimuatkan menggunakan getClass(). getResource() ialah laluan yang digunakan menunjuk ke fail dalam sistem fail tempatan, bukan dalam classpath. Untuk menyelesaikan isu ini, pastikan sumber diletakkan dalam laluan kelas dan boleh diakses oleh pemuat kelas semasa masa jalan.

Atas ialah kandungan terperinci Mengapa imej saya dimuatkan dengan ImageIcon tetapi tidak dengan getClass().getResource()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan