views:

1416

answers:

3

I want to use the ClassLoader to load a properties file for the Properties class. I've simplified the below code to remove error handling for the purposes of this discussion:

loader = this.getClass().getClassLoader();
in = loader.getResourceAsStream("theta.properties");
result = new Properties();
result.load(in);

In the same directory as this class I have the file "theta.properties" but the InputStream is always null. Am I putting the file in the wrong place? I'm using eclipse and its set to build the class files to the source folder - so that shouldn't be the problem.

I can't find anything in the JavaDoc to get the ClassLoader to tell me what classpath is being searched.

+1  A: 

If the file is in the same directory as the class, you have to prefix the class's package as a directory.

So if your package is:

package com.foo.bar;

Then your code is:

.getResourceAsStream("com/foo/bar/theta.properties");
Yishai
+3  A: 

By using getClass().getClassloader() you look for "theta.properties" from the root path directory. Just use getClass().getResourceAsStream() to get a resource relative to that class.

Kathy Van Stone
A: 

You can use ResourceBundle

delPiero