Dilma
Dilma

Reputation: 645

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

I'm developing a Dynamic Web Project in Eclipse. I created a .properties file for store database details (Username, Password etc.). I added it by right clicking on the project and New -> File . I used the Java util package Properties class. But it does not working. I can not retrieve any property from the file. Here is the code I used,

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

Is there something wrong or Is there any particular place where I should put properties file.

Upvotes: 6

Views: 42164

Answers (5)

nitind
nitind

Reputation: 20023

You should instead be using the more portable java.util.Properties#load(InputStream) with the result of javax.servlet.ServletContext#getResourceAsStream(String).

Upvotes: 4

Dario
Dario

Reputation: 2073

You should have .properties file in same package as class that is using it.

Or better, read properties file with getResourceAsStream method (otherwise you can have some problem later when you'll have file in .war archive).

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

Upvotes: 1

user2821894
user2821894

Reputation: 1108

What you did is correct, ie right clicking the project and new--file.You have to Put your properties where you start your jvm from. Please look into the attached image. The properties file is marked in red. Look if your properties file is also located something like this. Also add this in your code to find out where to put your file:

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

For more details please follow this link- FileNotFoundException when using java properties file

enter image description here

Upvotes: 6

MadConan
MadConan

Reputation: 3767

Normally, you make sure the properties file is in the project runtime classpath (e.g. WEB-INF/classes) and then load it using either the System classloader or the property file handler's classloader, i.e. (Freehand typing from memory -- NOT COMPILED)

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

I'm betting you aren't pointing at the correct location. Make sure you're properties file is in the correct place. Using that code, I believe it is looking for ${CURRENT_WORKING_DIR}/database.properties, which is the case of a web app in eclipse is WEB-INF/classes (i think).

Upvotes: 4

Ashok Gudise
Ashok Gudise

Reputation: 79

Try to give absolute path or relative path to the proprty file, also check this propery file path has been add to source folders or not, if not it will not be copied to your classes folder. (Right cclick on project , check java build path under source tab.

Upvotes: 1

Related Questions