`
zhyiwww
  • 浏览: 87464 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

就读取Properties文件问题回复itVincent

阅读更多

itVincent , 非常感谢您的回复.看到您的回复,我就作了一下测试.<!----><o:p>

我的测试代码如下:<o:p>

              //InputStream in=LoginAction.class.getClassLoader().getResourceAsStream("com.yourcompany.struts.config.properties");<o:p>

              InputStream in=LoginAction.class.getClassLoader().getResourceAsStream("com//yourcompany//struts//config.properties");<o:p>

              <o:p> </o:p>

              System.out.println("properties  in  is  :   "+in);<o:p>

              Properties  p=new Properties();<o:p>

              try {<o:p>

                     p.load(in);<o:p>

                     String h=p.getProperty("JAVA_HOME");<o:p>

                     System.out.println("JAVA_HOME   :  --  "+h);   <o:p>

              } catch (IOException e1) {<o:p>

                     e1.printStackTrace();<o:p>

              }<o:p>

<o:p> </o:p>

我是在一个 action 中写的这段代码 .<o:p>

执行后的结果如下:(错误)<o:p>

properties  in  is  :   null<o:p>

2006-10-24 20:36:59 org.apache.struts.action.RequestProcessor processExc<o:p>

警告 : Unhandled Exception thrown: class java.lang.NullPointerException<o:p>

<o:p> </o:p>

页面的错误是:<o:p>

message <o:p>

<o:p> </o:p>

description The server encountered an internal error () that prevented it from fulfilling this request.<o:p>

<o:p> </o:p>

exception <o:p>

<o:p> </o:p>

javax.servlet.ServletException<o:p>

       org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)<o:p>

       org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)<o:p>

       org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)<o:p>

       org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)<o:p>

       org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)<o:p>

       javax.servlet.http.HttpServlet.service(HttpServlet.java:709)<o:p>

       javax.servlet.http.HttpServlet.service(HttpServlet.java:802)<o:p>

<o:p> </o:p>

<o:p> </o:p>

root cause <o:p>

<o:p> </o:p>

java.lang.NullPointerException<o:p>

       java.util.Properties$LineReader.readLine(Properties.java:365)<o:p>

       java.util.Properties.load(Properties.java:293)<o:p>

       com.yourcompany.struts.action.LoginAction.execute(LoginAction.java:134)<o:p>

       org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)<o:p>

       org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)<o:p>

       org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)<o:p>

       org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)<o:p>

       javax.servlet.http.HttpServlet.service(HttpServlet.java:709)<o:p>

       javax.servlet.http.HttpServlet.service(HttpServlet.java:802)<o:p>

<o:p> </o:p>

<o:p> </o:p>

note The full stack trace of the root cause is available in the Apache Tomcat/<!----> logs.<o:p>

<o:p> </o:p>

       然后我又作了如下的测试:<o:p>

              InputStream in1=LoginAction.class.getClassLoader().getResourceAsStream("config.properties");<o:p>

              <o:p> </o:p>

              System.out.println("properties  in  is  :   "+in1);<o:p>

              Properties  p1=new Properties();<o:p>

              try {<o:p>

                     p1.load(in1);<o:p>

                     String h1=p1.getProperty("JAVA_HOME");<o:p>

                     System.out.println("JAVA_HOME   :  --  "+h1);<o:p>

              } catch (IOException e1) {<o:p>

                     // TODO Auto-generated catch block<o:p>

                     e1.printStackTrace();<o:p>

              }<o:p>

执行后的结果如下:(正确)<o:p>

properties  in  is  :   java.io.ByteArrayInputStream@257b34<o:p>

JAVA_HOME   :  --  c:jdk<o:p>

xml file  url  is  :  file:/D:/jakarta-tomcat-/webapps/StrutsDemo/WEB-INF/<o:p>

classes/config.xml<o:p>

inputStream of the xml file  is  :  java.io.BufferedInputStream@ca5bff<o:p>

reader   :   org.dom4j.io.SAXReader@1cd3dd7<o:p>

document doc  is  :  org.dom4j.tree.DefaultDocument@09 [Document: name null<o:p>

]<o:p>

action  document  is  :  org.dom4j.tree.DefaultDocument@09 [Document: name<o:p>

null]<o:p>

note  List is : 1<o:p>

java home  node  is  :  org.dom4j.tree.DefaultElement@f [Element: <java att<o:p>

ributes: []/>]<o:p>

the value of the java node  is  :  c:\jdk<o:p>

<o:p> </o:p>

两次的结果不同点的分析: <o:p> </o:p>

       (主要看蓝色的代码部分,文件的存放位置的不同) <o:p> </o:p>

       第一种方法,配置文件在 WEB-INF/classes/ com/yourcompany/struts/config.properties 目录下放着。也就是在包目录下。 <o:p> </o:p>

       第二种方法,配置文件在 WEB-INF/classes/ 目录下存放。也就是根目录下。 <o:p> </o:p>

       所以如果用第二种方法来读第一种配置文件,就会出错。 <o:p> </o:p>

<o:p> 
--------------------------------------------------------------------------------------------------------------
以上是我的个人见解,欢迎批评指正.zhyiwww@163.com</o:p>



zhyiwww 2006-10-24 21:03 发表评论
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics