運行狀態下property文件已經被改動瞭,但是使用getResourceAsStream()方法讀取的文件沒發生變化,還是和最初啟動服務器時的一致。在網上查瞭一下,有人說是getResourceAsStream()方法讀取新文件後會被java虛擬機緩存,而再次調用getResourceAsStream()方法時會先查找java虛擬機中是否有此文件,如果有則直接返回,如果沒有才會去根據傳入的name獲取文件
[java]
final Properties prop = new Properties();
Property(String file){
try {
prop.load(this.getClass().getResourceAsStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace(System.err);
} catch (IOException e) {
e.printStackTrace(System.err);
}
}
應該改為
[java]
final Properties prop = new Properties();
Property(String file){
try {
prop.load(new FileInputStream(this.getClass().getResource(file).getFile()));
} catch (FileNotFoundException e) {
e.printStackTrace(System.err);
} catch (IOException e) {
e.printStackTrace(System.err);
}
}