Eclipse tidak dapat memuat gambar setelah mengekspor paket jar?
Alasan untuk masalah ini adalah sebagian besar karena masalah jalur, yang sering dijalankan secara normal dalam proyek, tetapi sekali dikemas ke dalam toples, itu tidak dapat ditampilkan secara normal. Mari kita ringkas metode untuk menyelesaikan masalah ini:
1. Selesaikan dengan menggunakan file sumber daya eksternal
Setelah mengemas proyek untuk menghasilkan JAR, buat folder baru dan tempatkan semua file gambar yang digunakan dalam proyek dan menghasilkan file jar dalam direktori ini. Selama kode merujuk file gambar dengan benar, seperti: ImageIcon Image = new ImageIcon (swingResourCeManager.getImage ("icons/logo.gif"));
Dengan cara ini, file gambar dan file kelas tidak ditempatkan dalam paket bersama. File kelas ada dalam paket, dan file gambar ada di direktori root proyek.
2. Selesaikan dengan menggunakan file sumber daya internal
Masukkan file gambar yang digunakan dalam paket proyek, dan saat pengemasan, file gambar dimasukkan ke dalam file JAR secara bersamaan. Metode ini harus menggunakan salah satu dari yang berikut dalam kode tertentu:
ImageIcon Image = ImageIcon baru (this.class.getResource ("icons/logo.gif"));Berikut ini adalah deskripsi terperinci dari metode ini:
Saat Anda menulis program untuk antarmuka grafis, Anda harus menggunakan berbagai sumber gambar. Jadi, ketika Anda mempublikasikan program Anda, bagaimana Anda mempublikasikan sumber daya gambar ini?
Cara paling sederhana adalah dengan mengemas sumber daya gambar ini bersama dengan file kelas Anda ke dalam file jar yang dapat dieksekusi, sehingga Anda hanya perlu menerbitkan file jar untuk memasukkan semua konten, dan pengguna dapat menjalankan program hanya dengan mengklik dua kali file jar. Jika Anda mengemas gambar dalam file jar, bagaimana Anda mengakses gambar -gambar ini saat menulis program?
Apa jalan untuk foto -foto ini? Anda dapat menggunakan metode getResource () untuk menyelesaikan masalah ini.
Di sini kami menganalisis dua situasi yang paling umum:
1. Anda mengemas semua sumber daya ke Andy.jar, dan kelas Anda ada dalam paket: paket Andycpp; Semua sumber gambar Anda ditempatkan di folder gambar, dan folder gambar juga ada dalam paket AndyCPP. Dengan cara ini, jalan terakhir adalah:
Andy.jar
| __andycpp
| __ guitest.class
| __ Gambar
| __ Snap1.jpg
Karena folder gambar dan kelas yang merujuknya terletak pada level yang sama, Anda dapat mengaksesnya melalui jalur relatif:
java.net.url imgurl = guitest.class.getResource ("gambar/snap1.jpg"); Imageicon img1 = new ImageIcon (imgurl);Apa yang perlu diperhatikan di sini adalah masalah kasus! Bagian dalam file jar sangat sensitif, jadi jika gambar itu sendiri disebut snap1.jpg dan Anda menulis jalur ke gambar/snap1.jpg, maka gambar tidak akan ditemukan. Perlu juga dicatat bahwa setiap kelas (catatan, bukan objek) memiliki metode getResource (), tetapi Anda tidak dapat menggunakannya dengan santai. Anda hanya dapat menggunakan metode getResource () dari kelas yang berada pada level yang sama dengan folder gambar. Misalnya, pada gambar di atas, kelas dan gambar Guitest berada pada level yang sama, jadi Anda perlu menggunakan metode getResource () dari kelas ini.
2. Dalam kasus lain, jika Anda memiliki banyak kelas dan struktur paket sangat rumit, maka tidak mungkin Anda akan meletakkan gambar dan kelas pada tingkat yang sama, tetapi Anda harus meletakkan gambar di lapisan terluar dan membiarkan semua kelas mengakses gambar melalui jalur absolut:
Andy.jar
| __andycpp
| __ guitest.class
| __ Gambar
| __ Snap1.jpg
Kodenya adalah sebagai berikut:
java.net.url imgurl = guitest.class.getResource ("/gambar/snap1.jpg"); Imageicon img1 = gambar baru (imgurl);Pernahkah Anda melihat perbedaan dari kode di atas? Perbedaannya sangat halus. Cukup tambahkan backslash "/" di depan "gambar". Backslash ini mewakili direktori root, dan tidak ada backslash mewakili jalur relatif ..
Artikel di atas secara singkat berbicara tentang masalah jalur gambar pengemasan java ke dalam toples adalah semua konten yang telah saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.