首先,請勿在Java EE Web應用程序中使用ClassLoader#getSystemResourceAsStream()
。請改用ClassLoader#getResourceAsStream()
。我還會在一個Java SE桌面應用程序中使用ClassLoader#getSystemResourceAsStream()
的大問號,肯定它是否打算分發,但除此之外。
ClassLoader
最終從類路徑加載資源。所以你所要做的就是確保文件被放置在默認由webapp的運行時類路徑或覆蓋的路徑之一中,以便通過服務器將文件的新路徑添加到webapp的運行時類路徑具體的配置設置,如Tomcat的/conf/catalina.properties
的shared.loader
屬性。
webapp的運行時類路徑覆蓋的默認路徑之一是WAR的/WEB-INF/classes
文件夾。從IDE項目的角度來看,只需將文件放在「Java Source」(src)文件夾的根文件夾中,那裏有所有Java包和類。 IDE將注意,它最終會在構建的WAR文件的/WEB-INF/classes
中結束。
我順便還是假定你是而不是從webapp裏面創建文件,就像你明確告訴的那樣。那不行。如果你的實際上也需要寫入權限,那麼你將需要一個絕對的磁盤文件系統路徑。例如,您可以通過將其提供爲VM參數或環境變量來進行配置。