<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 4, comments - 1, trackbacks - 0, articles - 2
    有個朋友要用getClass().getResourceAsStream() 提取test.properties

    但是在服務器運行過程中 無論怎么更改test.properties

    得出的數(shù)據(jù)還是最初的那個

    我后來試了一下 代碼如下

    package test;

    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;

    public class Test {
        Properties pp 
    = null;

        
    public Properties getData() throws IOException {
            InputStream is 
    = getClass().getResourceAsStream("/test.properties");
            
    // InputStream is = new FileInputStream(
            
    // "D:\\java\\apache-tomcat-5.5.17\\apache-tomcat-5.5.17\\webapps\\testp\\WEB-INF\\classes\\test.properties");
            System.out.println(is.hashCode());
            pp 
    = new Properties();
            pp.load(is);
            System.out.println(pp.hashCode());
            
    // Properties pp = System.getProperties();
            
    // Enumeration<String> enu = (Enumeration<String>) pp.propertyNames();
            
    // while(enu.hasMoreElements()){
            
    // String name = enu.nextElement();
            
    // System.out.println(name + "=" +pp.getProperty(name));
            
    // }
            
    // is.close();
            is.close();
            
    return pp;
        }

        
    public static Properties getProperties() {
            
    try {
                
    return new Test().getData();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
            
    return null;
        }

        
    public static void main(String[] args) {
            
    while (true) {
                System.out.println(getProperties());
                
    try {
                    Thread.sleep(
    1000L);
                } 
    catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    上面這個解析的Properties pp 的hashcode 始終不變

    而InputStream 的hash 缺一直改變

    由此可以推斷結(jié)論有
    getClass().getResourceAsStream() 是ClassLoader 加載Class一樣的把test.properties 加載進了內(nèi)存


    但是針對上面的紅字我寫了MAIN函數(shù)做為測試

    現(xiàn)在發(fā)現(xiàn)如果我更改Properties ,會立刻做出反應

    main函數(shù)中的代碼我的理解如下 每次ClassLoader都在加載ClassPath下的文件,當發(fā)現(xiàn)改變就構(gòu)成Properties 改變

    所以我想這是不是tomcat的ClassLoader 的一個bug ??

    以上言論,均屬我的猜測,還望高手指點.

    新發(fā)現(xiàn):

      InputStream is = Test.class.getClassLoader().getResourceAsStream(// .getResourceAsStream(
      InputStream is = Test.class.getResourceAsStream(// .getResourceAsStream(
    這樣加載的Properties 是兩個不同的實例 我的意思是想說兩份不同的內(nèi)存

    所以如果想test.properties隨時變 用絕對路徑 InputStream is = new FileInputStream("絕對路徑")
    就可以了
    主站蜘蛛池模板: 毛片免费在线视频| 无码国产精品一区二区免费3p | 三年片在线观看免费| 亚洲av无码天堂一区二区三区| 亚洲日韩久久综合中文字幕| 4虎永免费最新永久免费地址| 亚洲第一页在线观看| 亚洲免费视频网站| 亚洲黄色高清视频| 日韩免费一区二区三区在线| 亚洲人成免费电影| 日本免费v片一二三区| 黄网站色成年片大免费高清| www国产亚洲精品久久久日本| 国产三级在线免费观看| 亚洲无线观看国产精品| 午夜精品免费在线观看| 亚洲激情电影在线| 午夜视频在线在免费| 美女黄频a美女大全免费皮| 亚洲人成色7777在线观看不卡| 久久久久久久国产免费看| 亚洲精品天天影视综合网| 久久成人国产精品免费软件| 国产成人精品日本亚洲专一区| 亚洲欧洲国产成人综合在线观看| 黄色片网站在线免费观看| 亚洲人JIZZ日本人| 100部毛片免费全部播放完整| 激情综合亚洲色婷婷五月| 亚洲AV成人潮喷综合网| 国产成年无码久久久免费| 亚洲中文无码av永久| 国产在线a不卡免费视频| 怡红院免费全部视频在线视频| 亚洲精品亚洲人成在线观看麻豆| 日韩免费一级毛片| 免费视频一区二区| 亚洲va中文字幕| 亚洲午夜精品久久久久久人妖| 全免费a级毛片免费看无码|