2012-05-14 100 views
1

我不喜歡在resources/mypackage/.../somepackage/resourcefile.properties中擁有我的屬性文件,寧願讓它們在resources/resourcefile.properties。這個現象的原因可能不:訪問Java中基礎包的資源?

  1. 被迫寫MyApplication.class.getResourceAsStream("../../../../../../../../resources/resourcefile.properties")
  2. 它使用SomeClass.getClassLoader().getResourceAsStream("resourcefile.properties")時在Tomcat中不工作?

回答

5

放在一個斜線指定根包:

SomeClass.getClassLoader().getResourceAsStream("/resourcefile.properties") 
+0

你肯定的作品?我認爲每個虛擬機只有一個類加載器,因此Tomcat沒有以root用戶爲基礎的軟件包目錄,而是有一些不同的目錄。 –

+0

'Class.getResourceAsStream()'從類路徑加載資源,而不是文件系統。雖然分層類加載器可能強制實現可見性約束(即,您可以從您自己的軟件包或任何父母中查看資源,但是不能從兄弟軟件包中查看資源),但類路徑上的所有軟件包名稱都共享同一個根目錄。 – Barend