繁体   English   中英

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

[英]How to use a .properties file in Eclipse Java Dynamic Web Project?

我正在Eclipse中开发一个Dynamic Web Project。 我为商店数据库详细信息(用户名,密码等)创建了一个.properties文件。 我通过右键单击项目和New - > File添加了它。 我使用了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();
    }

有什么不对或有什么特别的地方我应该放置属性文件。

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

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

有关更多详细信息,请在使用java属性文件时遵循此链接 - FileNotFoundException

在此输入图像描述

您应该使用更具可移植性的java.util.Properties#load(InputStream) ,其结果为javax.servlet.ServletContext#getResourceAsStream(String)

通常,您确保属性文件位于项目运行时类路径中(例如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中的Web应用程序就是WEB-INF/classes (我认为)。

尝试给出proprty文件的绝对路径或相对路径,也检查这个文件路径是否已经添加到源文件夹中,如果没有,它将不会被复制到您的classes文件夹中。 (右键单击项目,检查源选项卡下的java构建路径。

您应该将.properties文件放在与使用它的类相同的包中。

或者更好的是,使用getResourceAsStream方法读取属性文件(否则,当您在.war存档中有文件时,可能会遇到一些问题)。

InputStream inputStream = 
    getClass().getClassLoader().getResourceAsStream("database.properties");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM