zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0

          itVincent , 非常感謝您的回復.看到您的回復,我就作了一下測試.

          我的測試代碼如下:

          ????????????? //InputStream in=LoginAction.class.getClassLoader().getResourceAsStream("com.yourcompany.struts.config.properties");

          ????????????? InputStream in=LoginAction.class.getClassLoader().getResourceAsStream("com//yourcompany//struts//config.properties");

          ?????????????

          ????????????? System.out.println("properties? in? is? :?? "+in);

          ????????????? Properties? p=new Properties();

          ????????????? try {

          ???????????????????? p.load(in);

          ???????????????????? String h=p.getProperty("JAVA_HOME");

          ???????????????????? System.out.println("JAVA_HOME?? :? --? "+h);??

          ????????????? } catch (IOException e1) {

          ???????????????????? e1.printStackTrace();

          ????????????? }

          ?

          我是在一個 action 中寫的這段代碼 .

          執行后的結果如下:(錯誤)

          properties? in? is? :?? null

          2006-10-24 20:36:59 org.apache.struts.action.RequestProcessor processExc

          警告 : Unhandled Exception thrown: class java.lang.NullPointerException

          ?

          頁面的錯誤是:

          message

          ?

          description The server encountered an internal error () that prevented it from fulfilling this request.

          ?

          exception

          ?

          javax.servlet.ServletException

          ?????? org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)

          ?????? org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

          ?????? org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)

          ?????? org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

          ?????? org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

          ?????? javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

          ?????? javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

          ?

          ?

          root cause

          ?

          java.lang.NullPointerException

          ?????? java.util.Properties$LineReader.readLine(Properties.java:365)

          ?????? java.util.Properties.load(Properties.java:293)

          ?????? com.yourcompany.struts.action.LoginAction.execute(LoginAction.java:134)

          ?????? org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)

          ?????? org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)

          ?????? org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

          ?????? org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

          ?????? javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

          ?????? javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

          ?

          ?

          note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.

          ?

          ?????? 然后我又作了如下的測試:

          ????????????? InputStream in1=LoginAction.class.getClassLoader().getResourceAsStream("config.properties");

          ?????????????

          ????????????? System.out.println("properties? in? is? :?? "+in1);

          ????????????? Properties? p1=new Properties();

          ????????????? try {

          ???????????????????? p1.load(in1);

          ???????????????????? String h1=p1.getProperty("JAVA_HOME");

          ???????????????????? System.out.println("JAVA_HOME?? :? --? "+h1);

          ????????????? } catch (IOException e1) {

          ???????????????????? // TODO Auto-generated catch block

          ???????????????????? e1.printStackTrace();

          ????????????? }

          執行后的結果如下:(正確)

          properties? in? is? :?? java.io.ByteArrayInputStream@257b34

          JAVA_HOME?? :? --? c:jdk

          xml file? url? is? :? file:/D:/jakarta-tomcat-5.0.28/webapps/StrutsDemo/WEB-INF/

          classes/config.xml

          inputStream of the xml file? is? :? java.io.BufferedInputStream@ca5bff

          reader?? :?? org.dom4j.io.SAXReader@1cd3dd7

          document doc? is? :? org.dom4j.tree.DefaultDocument@13c4c09 [Document: name null

          ]

          action? document? is? :? org.dom4j.tree.DefaultDocument@13c4c09 [Document: name

          null]

          note? List is : 1

          java home? node? is? :? org.dom4j.tree.DefaultElement@f1f34a [Element: <java att

          ributes: []/>]

          the value of the java node? is? :? c:\jdk

          ?

          兩次的結果不同點的分析:

          ?????? (主要看藍色的代碼部分,文件的存放位置的不同)

          ?????? 第一種方法,配置文件在 WEB-INF/classes/ com/yourcompany/struts/config.properties 目錄下放著。也就是在包目錄下。

          ?????? 第二種方法,配置文件在 WEB-INF/classes/ 目錄下存放。也就是根目錄下。

          ?????? 所以如果用第二種方法來讀第一種配置文件,就會出錯。

          ?
          --------------------------------------------------------------------------------------------------------------
          以上是我的個人見解,歡迎批評指正.zhyiwww@163.com



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2006-10-24 21:03 zhyiwww 閱讀(3531) 評論(3)  編輯  收藏 所屬分類: discuss

          FeedBack:
          # re: 就讀取Properties文件問題回復itVincent
          2006-10-24 23:02 | itvincent[匿名]
          對,應該有這樣的區別,多謝測試  回復  更多評論
            
          # re: 就讀取Properties文件問題的回復
          2006-12-26 09:47 | 小哥
          多謝提供這么好的經驗啊!困擾幾天的問題終于解決了~~

          在工程中使用ClassLoader,然后直接getResourceAsStream("....."),最好用的配置文件路徑還是WEB-INF/classes/ 目錄下存放,使用很方便!
            回復  更多評論
            
          # re: 就讀取Properties文件問題回復itVincent
          2013-05-18 21:51 | 楊俊林
          非常感謝,您的方法是我發現的唯一能行的,別的好像在WEB里面都不行。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 石城县| 新巴尔虎左旗| 辛集市| 玉田县| 蓬安县| 东乡族自治县| 浏阳市| 台中市| 门源| 响水县| 吉林省| 佛山市| 固始县| 清新县| 青川县| 夏津县| 万年县| 龙岩市| 肥乡县| 宜州市| 拜泉县| 赤城县| 罗田县| 兴安盟| 长寿区| 孟连| 建阳市| 盐津县| 五家渠市| 内丘县| 金华市| 筠连县| 民丰县| 民权县| 惠东县| 沅江市| 腾冲县| 四会市| 龙海市| 南和县| 西乌|