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>
分享到:
相关推荐
本篇文章将详细探讨如何通过Python来读取并解析`.properties`配置文件。 首先,了解`.properties`文件的格式。这种文件通常用于存储配置信息,其中键值对以等号`=`分隔,每一行代表一个键值对,注释以`#`或`!`开始...
读取Properties文件是Java开发中的常见操作,特别是在需要根据配置文件动态改变程序行为的时候。下面我们将详细探讨如何在Java中读取Properties文件。 首先,你需要确保你的项目中包含了一个Properties文件,比如`...
本篇将详细讲解如何在Java中读取`properties`文件并将其内容转换为`Map`对象。 1. **properties文件结构** `properties`文件的结构非常简单,每行代表一个键值对,键和值之间用等号`=`或冒号`:`分隔。例如: ``` ...
properties文件读写操作
ConfigFile configfile = ConfigFile.getInstance("ipConfig123.properties"); String ip = configfile.getkeyvalue("ip"); 可以取出ipConfig123.properties 文件中IP的内容
总结一下,处理Java中的Properties文件读写时,需要注意文件路径的准确性、文件的读写权限以及缓存问题。通过以上方法,应该能够有效解决描述中提到的问题。对于提供的"新建文本文档.txt",虽然不是Properties文件,...
### Java读写Properties配置文件详解 #### 一、引言 在Java开发中,`Properties`类被广泛用于处理各种类型的配置文件。这些文件通常包含了应用程序运行时所需的配置信息,如数据库连接信息、系统参数等。`...
本篇文章将详细讲解如何读取.properties文件,将其内容转化为Map对象,以及如何将这个Map对象写回到新的文件中。 首先,我们需要了解什么是.properties文件。这是一种文本格式的文件,用于存储键值对,其中每个键和...
`properties`文件的读取是Java开发中的常见操作,尤其在处理配置、国际化(i18n)或持久化数据时。 在Java中,我们使用`java.util.Properties`类来处理`properties`文件。以下是一个简单的`properties`文件读取的...
"SSM 读取properties文件"这个话题聚焦于如何在项目中有效地读取和使用这些配置文件。properties文件通常用于存储应用程序的配置参数,如数据库连接信息、服务器端口、邮件服务设置等,使得这些关键信息能够独立于...
这个工具类可能会使用`java.util.Properties`类和`java.io.FileInputStream`或`java.io.FileOutputStream`来读写文件。 3. **使用工具类读取.properties文件** 使用工具类读取`.properties`文件的步骤如下: 1. ...
`diffProperties.java`文件很可能是这个工具的主要实现部分,它可能包含了读取两个properties文件,比较其内容并显示差异数目的逻辑。在Java中,我们可以使用`Properties`类的`entrySet()`方法获取所有键值对,然后...
- **Java**:Apache POI库可以帮助读写Excel文件,Java的内置`Properties`类可以处理Properties文件。 - **Python**:`openpyxl`库处理Excel文件,`configparser`模块处理Properties文件。 - **Python pandas**:...
### 如何使用Java读取properties文件内容 在Java开发中,`properties`文件是一种非常常见的配置文件格式,它主要用于存储程序的各种配置信息。通过这种方式,可以实现程序与配置的分离,便于维护和调整。本文将详细...
本篇文章将详细讲解如何在Java中“完美”地读取`properties`文件。 首先,我们需要了解`properties`文件的基本结构。它是一个文本文件,其中键值对以`key=value`的形式存储,每一行代表一个键值对,注释以`#`或`!`...
本示例着重介绍如何将时间写入`properties`文件并读取出来。 首先,我们需要了解`java.util.Properties`类,它是Java标准库中处理`properties`文件的核心类。它提供了加载、存储、设置和获取属性的方法。下面将详细...
本篇将深入探讨如何使用Java来实现Properties文件的读取。 首先,我们需要了解Properties类在Java中的作用。`java.util.Properties`是Java提供的一个类,它继承了`Hashtable`,主要用于处理属性列表(键/值对)。...
在Java编程中,读取`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息,如数据库连接字符串、系统参数等。`.properties`文件是一种基于键值对的文本格式,易于理解和编辑。在这个场景中,我们将探讨...
然而,由于历史原因,Java Properties文件在处理中文字符时可能会遇到一些问题,因为早期的properties格式不支持Unicode,导致中文字符无法正确显示或保存。 这篇名为“Java Properties文件中文转化”的博文主要...
在处理`.properties`文件时,可能会遇到文件找不到、读写权限不足等问题。因此,需要适当地捕获和处理`IOException`。 ### 8. 使用`@ConfigurationProperties` Spring框架提供了一种更高级的方式来绑定`....