如何在Eclipse Java Dynamic Web Project中使用.properties文件?

时间:2013-10-28 18:05:50

标签: java eclipse java-ee properties dynamic-websites

我正在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();
    }

是否存在错误或者是否存在我应该放置属性文件的特定位置。

5 个答案:

答案 0 :(得分:5)

你所做的是正确的,即右击项目和new--file。你必须将你的属性放在你开始你的jvm的地方。请查看附图。属性文件标记为红色。看看你的属性文件是否也像这样。 还要在代码中添加此内容以找出放置文件的位置:

System.out.println(new File(".").getAbsolutePath());

有关详细信息,请点击此链接 - FileNotFoundException when using java properties file

enter image description here

答案 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");