我正在Eclipse中开发一个Dynamic Web Project。我为商店数据库详细信息(用户名,密码等)创建了一个.properties文件。我通过右键单击项目和New - >添加了它。档案。我使用了Java util包Properties类。但它不起作用。我无法从文件中检索任何属性。这是我使用的代码,
Properties prop = new Properties();
try {
prop.load(new FileInputStream("database.properties"));
String db = prop.getProperty("database");
String userName = prop.getProperty("dbuser");
String password = prop.getProperty("dbpassword");
} catch (IOException ex) {
ex.printStackTrace();
}
是否存在错误或者是否存在我应该放置属性文件的特定位置。
答案 0 :(得分:5)
你所做的是正确的,即右击项目和new--file。你必须将你的属性放在你开始你的jvm的地方。请查看附图。属性文件标记为红色。看看你的属性文件是否也像这样。 还要在代码中添加此内容以找出放置文件的位置:
System.out.println(new File(".").getAbsolutePath());
有关详细信息,请点击此链接 - FileNotFoundException when using java properties file
答案 1 :(得分:4)
您应该使用更具可移植性的java.util.Properties#load(InputStream)
,其结果为javax.servlet.ServletContext#getResourceAsStream(String)
。
答案 2 :(得分:4)
通常,您确保属性文件位于项目运行时类路径中(例如WEB-INF / classes),然后使用System类加载器或属性文件处理程序的类加载器加载它,即(从内存中进行徒手写入 - 未编译)
try{
Properties p = new Properties();
InputStream in = MyPropertyHandler.getClass()
.getClassLoader()
.getResourceAsStream("com/package/props/database.properties");
p.load(in);
catch(IOException e){
e.printStackTrace(System.err);
}
我打赌你没有指向正确的位置。确保您的属性文件位于正确的位置。使用该代码,我相信它正在寻找${CURRENT_WORKING_DIR}/database.properties
,eclipse中的Web应用程序就是WEB-INF/classes
(我认为)。
答案 3 :(得分:1)
尝试给出proprty文件的绝对路径或相对路径,同时检查这个文件路径是否已添加到源文件夹中,如果不是,则不会将其复制到您的classes文件夹中。 (右键单击项目,检查源选项卡下的java构建路径。
答案 4 :(得分:1)
您应该将 .properties 文件放在与使用它的类相同的包中。
或者更好的是,使用getResourceAsStream
方法读取属性文件(否则,如果您在.war存档中有文件,则可能会遇到一些问题。)
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("database.properties");