Reputation: 5231
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.
Upvotes: 8
Views: 24686
Reputation: 26271
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.
Upvotes: 10
Reputation: 91871
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");
Upvotes: 6