如何在EclipseJava动态Web项目中使用.properties文件?

如何在EclipseJava动态Web项目中使用.properties文件?,java,eclipse,jakarta-ee,properties,Java,Eclipse,Jakarta Ee,Properties,我正在Eclipse中开发一个动态Web项目。我为存储数据库详细信息(用户名、密码等)创建了一个.properties文件。我通过右键单击项目和New->File添加了它。我使用了Javautil包属性类。但它不起作用。我无法从文件中检索任何属性。这是我使用的代码 Properties prop = new Properties(); try { prop.load(new FileInputStream("database.properties"));

我正在Eclipse中开发一个动态Web项目。我为存储数据库详细信息(用户名、密码等)创建了一个.properties文件。我通过右键单击项目和New->File添加了它。我使用了Javautil包属性类。但它不起作用。我无法从文件中检索任何属性。这是我使用的代码

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

是否有问题或是否有任何特定位置应放置属性文件。

尝试提供属性文件的绝对路径或相对路径,同时检查此属性文件路径是否已添加到源文件夹,如果没有,则不会复制到您的类文件夹。(右键单击project,检查source选项卡下的java构建路径。

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

您应该在使用它的类的同一个包中有.Properties文件

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


通常,确保属性文件位于项目运行时类路径(例如WEB-INF/classes)中,然后使用系统类加载器或属性文件处理程序的类加载器加载它,即(从内存徒手键入-未编译)


我打赌您没有指向正确的位置。请确保您的属性文件位于正确的位置。使用该代码,我相信它正在查找
${CURRENT\u WORKING\u DIR}/database.properties
,eclipse中的web应用就是
web-INF/classes
(我想).

您所做的是正确的,即右键单击项目和新建文件。您必须将属性放在启动jvm的位置。请查看附件中的图像。属性文件标记为红色。查看属性文件是否也位于类似的位置。 还要在代码中添加以下内容,以确定文件的存放位置:

System.out.println(new File(".").getAbsolutePath());
有关更多详细信息,请点击此链接-


似乎在查找database.properties时遇到了问题。它位于哪里?它与您的类在同一个包中吗?是的!我刚刚发现我给出的路径指向eclipse文件夹。您的意思是我应该将.properties文件保存在类使用.properties文件的包中吗?@Dilma:这不是严格必要的你可以把它放在任何地方,但至少确保它在运行时类路径中是最容易的(也是更好的做法)。它甚至不需要是源文件夹——只需要声明为资源位置的某个地方(例如ext文件夹).yeah!我刚刚发现我给出的路径是指eclipse文件夹。我检查了该图像。在这里,您使用了.properties文件的绝对路径。但是当我主持项目时,某些地方不起作用(给出绝对路径)。我只是想知道是否有任何标准的方法来保存和访问.properties文件。谢谢!这不是使用属性文件的正确方法。不建议使用绝对路径。如果您的文件是C:\\a.properties,并且您使用完整路径,明天您将在linux中部署WAR,这将不起作用。请参阅Nitind应答这是正确的方法我们必须将该文件放在Maven项目的{YourApp}\src\main\resources中,以及非Maven动态Web项目的WebContent下
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);
}
System.out.println(new File(".").getAbsolutePath());