I imported a project from a Git repository and added Maven nature to it in Eclipse. In the resources folder, I added a configuration file called myconf.properties
. Now, whenever I try to open this file from my Java code, I get FileNotFoundException
. The file is also present in the target/classes
folder generated after maven compiles the project.
Can anyone tell me what can be the problem? My Java code that tries to load this file is:
props.load(new FileInputStream("myconf.properties"));
where props
is a Properties
object.
Can anyone give me some hints on how to solve this issue?
Using ClassLoader.getSystemClassLoader()
Sample code :
Properties prop = new Properties();
InputStream input = null;
try {
input = ClassLoader.getSystemClassLoader().getResourceAsStream("conf.properties");
prop.load(input);
} catch (IOException io) {
io.printStackTrace();
}
I believe running from Eclipse, if you're using "myconf.properties" as the relative path, You file structure should look somehting like this
ProjectRoot
src
bin
myconf.properties
Eclipse will look for the the file in the project root dir if no other dirs are specified in the file path
Right click the Resources
folder and select Build Path > Add to Build Path
I think you need to put it under src/main/resources
and load it as follows:
props.load(new FileInputStream("src/main/resources/myconf.properties"));
The way you are trying to load it will first check in base folder of your project. If it is in target/classes
and you want to load it from there do the following:
props.load(new FileInputStream("target/classes/myconf.properties"));
I use something like this to load properties file.
final ResourceBundle bundle = ResourceBundle
.getBundle("properties/errormessages");
for (final Enumeration<String> keys = bundle.getKeys(); keys
.hasMoreElements();) {
final String key = keys.nextElement();
final String value = bundle.getString(key);
prop.put(key, value);
}
If it is simple application then getSystemResourceAsStream can also be used.
try (InputStream inputStream = ClassLoader.getSystemResourceAsStream("config.properties"))..
Source: Stackoverflow.com