Saat memuat Properti dari Kelas dalam paket com.al.common.email.templates
yang dapat Anda gunakan
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("foo.properties");
prop.load(in);
in.close();
(Tambahkan semua penanganan pengecualian yang diperlukan).
Jika kelas Anda tidak ada dalam paket itu, Anda perlu mendapatkan InputStream sedikit berbeda:
InputStream in =
getClass().getResourceAsStream("/com/al/common/email/templates/foo.properties");
Jalur relatif (tanpa awalan '/') di getResource()
/ getResourceAsStream()
berarti bahwa sumber daya akan dicari relatif terhadap direktori yang mewakili paket tempat kelas berada.
Menggunakan java.lang.String.class.getResource("foo.txt")
akan mencari file (tidak ada) /java/lang/String/foo.txt
di classpath.
Menggunakan jalur absolut (yang dimulai dengan '/') berarti paket saat ini diabaikan.
Untuk menambah jawaban Joachim Sauer, jika Anda perlu melakukan ini dalam konteks statis, Anda dapat melakukan sesuatu seperti berikut:
(Penanganan pengecualian dihilangkan, seperti sebelumnya.)
sumber
resources
folder dalam sebuahmaven
proyekDua kasus berikut berkaitan dengan memuat file properti dari kelas contoh bernama
TestLoadProperties
.Kasus 1: Memuat file properti menggunakan
ClassLoader
Dalam hal ini, file properti harus ada di
root/src
direktori agar pemuatan berhasil.Kasus 2: Memuat file properti tanpa menggunakan
ClassLoader
Dalam hal ini, file properti harus berada di direktori yang sama dengan
TestLoadProperties.class
file agar pemuatan berhasil.Catatan:
TestLoadProperties.java
danTestLoadProperties.class
merupakan dua file yang berbeda. Yang pertama,.java
file, biasanya ditemukan disrc/
direktori proyek , sedangkan yang terakhir,.class
file, biasanya ditemukan dibin/
direktorinya.sumber
sumber
sumber
Dengan asumsi Anda menggunakan kelas Properties , melalui metode pemuatannya , dan saya kira Anda menggunakan ClassLoader getResourceAsStream untuk mendapatkan aliran input.
Bagaimana Anda menyampaikan namanya, sepertinya harus dalam bentuk ini:
/com/al/common/email/templates/foo.properties
sumber
Saya berhasil menyelesaikan masalah ini dengan panggilan ini
Ekstra, Anda harus meletakkan file apa pun.properties Anda di / src / main / resources
sumber
PropertiesUtil
dari?Tidak ada yang menyebutkan solusi serupa tetapi bahkan lebih sederhana daripada di atas tanpa perlu berurusan dengan paket kelas. Dengan asumsi myfile.properties ada di classpath.
Nikmati
sumber
gunakan kode di bawah ini, silakan:
sumber