[英]Howto access properties file from Java EE web application?
我在Eclipse中創建了一個動態Web項目。 我在src目錄中創建了一個屬性文件:
<project-root>/src/props.properties
我在調試模式下通過Eclipse啟動Tomcat。 現在我想從我的一個POJO中讀取屬性文件,但是我得到了一個FileNotFoundException。 當前路徑似乎是Eclipse路徑。
我在網上尋找解決方案,但沒有一個能為我工作。 也許我做錯了什么。 代碼是這樣的:
File file = new File("props.properties");
FileReader reader = new FileReader(file);
properties.load(reader);
我應該如何訪問屬性文件? 它應該放在哪里?
提前致謝。
如果它是一個Web應用程序,那么屬性將部署到WEB-INF / classes,並且可以使用類加載器加載
InputStream in = {NameOfClassWhereThisisInvoked}.class.getResourceAsStream("/props.properties");
properties.load(in);
in.close();
實際上,無論是否是webapp,都應該有效。
我假設src被定義為源文件夾
還有另一種方法,如下所示:
File file = new File(session.getServletContext().getRealPath("/") + "props.properties");
您可以提供相對於您的eclipse Web應用程序項目的“WebContent”文件夾的任何路徑,而不是“props.properties”。
這是從類路徑中的任何位置加載屬性文件的正確方法
private Properties getPropertiesFromClasspath(String propFileName)
throws IOException
{
Properties props = new Properties();
InputStream inputStream =
this.getClass().getClassLoader().getResourceAsStream(propFileName);
if (inputStream == null)
{
throw new FileNotFoundException("property file '" + propFileName
+ "' not found in the classpath");
}
props.load(inputStream);
return props;
}
您可以創建一個單例類,以便在首次訪問時在內存中加載屬性,然后通過靜態方法使用它們。 有關這方面的完整示例,請訪問http://bharatonjava.wordpress.com/2012/09/12/using-properties-file-in-java-application/
在src文件夾中的Kepp ur Properties文件和以下代碼足以讀取屬性文件
**File file = new File("./src/config.properties");
FileReader reader = new FileReader(file);
prop.load(reader);
System.out.println(prop.getProperty("directorypath"));**
檢查這個問題 。 你應該做“src / props.properties”
您的項目是否設置為自動構建? 如果是這樣(或者您正在手動構建),請檢查props.properties
是否出現在項目的輸出文件夾中(在Eclipse中,這通常是“bin”,但可能是WebRoot或其他內容,具體取決於項目的設置方式)。
當項目構建時,它應該復制配置文件以及編譯的類,JSP等。但是,我認為文件讀取器默認使用JVM的主目錄作為源代碼。 在Eclipse的情況下,這意味着您的props.properties
文件必須位於項目根目錄中 ,即不是“src”文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.