[英]Reading Property file from tomcat webapps folder
我已將屬性文件放置在tomcat的webaaps文件夾中,但無法訪問它。 我的代碼是
InputStream is = ClassLoader.getSystemResourceAsStream("database.properties");
if(is == null){
is = ClassLoader.getSystemClassLoader().getResourceAsStream("database.properties");
}
if(is == null){
is = ClassLoader.getSystemClassLoader().getResourceAsStream("/database.properties");
}
if(is == null){
is = ClassLoader.getSystemClassLoader().getResourceAsStream("/webapps/database.properties");
}
if(is == null){
is = ClassLoader.getSystemClassLoader().getResourceAsStream("webapps/database.properties");
}
不過,我將輸入流作為null。
getSystemResourceAsStream
方法返回null
表示在類路徑的指定位置找不到資源。 這很有意義,因為$TOMCAT_HOME/webapps
不在類路徑中。
因此,要么將該文件放在應用程序的類路徑中的目錄中(並且如果您想在戰爭之外使用它,則必須將其放入$CATALINA_HOME/lib
-並附帶所有隱含的后果)或更改您的方法(使用JNDI存儲屬性,使用絕對路徑等)。
要通過類路徑訪問屬性文件,我將這些文件放在“ webapp / WEB-INF / classes”中。
這樣做是標准的,並且是避免絕對路徑問題的好方法。
如果您的項目具有標准的Maven結構,則由Maven管理:
當Maven打包Web應用程序時,將在“ webapp / WEB-INF / classes”中編譯類,並將資源復制到同一目錄。
您無法以這種方式訪問Web應用程序外部的文件。 該文件不在您的類路徑中,因此無法通過“ ClassLoader”獲得它。 將其放入您的類路徑(在* .war內部)或按以下方式訪問它:
File f = new File("/absolute/path/to/your/file");
InputStream is = new FileInputStream(f);
但是tomcat/webapps
仍然不是屬性文件的好地方。 也許是用戶的主目錄? 然后您可以像這樣訪問它:
String home = System.getProperty("user.home");
File f = new File(home + "/yourfile.properties");
需要使用包含此文件的文件夾名稱更新classpath。 我做到了。 我在Eclipse,tomcat和獨立Java中做過
java -cp。:$ CLASSPATH:some / location / your / config yourclass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.