Soru Maven projesinde kaynak dosyalarının yolu nedir?


Maven projemde ana yöntemde aşağıdaki kod var:

FileInputStream in = new FileInputStream("database.properties");

ama her zaman bir dosya bulunamadı hatası olsun.

Dosyayı src / main / resources dizinine koydum ve hedef / sınıf dizinine düzgün bir şekilde kopyaladım (Maven kaynakları için beklenen davranış olduğuna inanıyorum) ama aslında programı çalıştırırken dosyayı bulamadığı görülüyor. Diğer çeşitli yolları denedim:

FileInputStream in = new FileInputStream("./database.properties");
FileInputStream in = new FileInputStream("resources/database.properties");

vs. hiçbir şey işe yaramıyor gibi görünüyor.

Peki, kullanılacak uygun yol nedir?


Aşağıda "reddetme" cevabına göre, ihtiyacım olan şey buydu:

InputStream in = TestDB.class.getResourceAsStream("/database.properties")

nerede TestDB sınıfın adıdır.

Yardımınız için teşekkürler, disown!


32
2018-06-23 18:55


Menşei




Cevaplar:


Dosyayı doğrudan bu şekilde yükleyemezsiniz, kaynak soyutlamasını kullanmanız gerekir (kaynak yalnızca dosya sisteminde değil, sınıf yolundaki herhangi bir yerde de olabilir - bir kavanoz dosyasında veya başka bir şekilde). Bu soyutlama, kaynak yüklerken kullanmanız gereken şey. Kaynak yolları, sınıf dosyanızın bulunduğu yere göre değişir, bu nedenle 'köke' ulaşmak için bir eğik çizgi eklemeniz gerekir:

InputStream in = getClass().getResourceAsStream("/database.properties");

53
2018-06-23 19:04



Dosyaya statik bir yöntemden erişmeye çalışıyorsanız, getClass () çalışmaz. Bu durumda bir alternatif var mı? - acarlow
Sınıf adını kullanın, örneğin Main.class.getResourceAsStream (). Herhangi bir sınıf veya sınıf yükleyiciyi kullanabilirsiniz, böylece hread.getContextClassLoader (). GetResourceAsStream () da çalışır. - Alexander Torstling