I have a property file placed in the root of the web project in Java. I am using Struts 2. My code is unable to read properties file. Where should I keep my properties file?
I have checked default path , it is where my Eclipse in installed. But I want that system should read file from project folder itself.
Right-click and select Add New Properties File. A new properties file will be added to your project. The new file will be selected and highlighted in the list.
The core configuration file for the framework is the default ( struts. xml ) file and should reside on the classpath of the webapp (generally /WEB-INF/classes ). The default file may include other configuration files as needed.
The struts. xml file contains the configuration information that you will be modifying as actions are developed. This file can be used to override default settings for an application, for example struts.
properties files are mainly used in Java programs to maintain project configuration data, database config or project settings, etc. Each parameter in properties file is stored as a pair of strings, in key-value pair format, where each key is on one line.
Usually you should put the properties file to the src
folder so your application is able to read the properties file when you do run your application the properties file is copied from the src
folder to the classes
folder. As far as you know the classes
folder should be the project output folder, so it will be used as a classpath
folder and application is able to load the properties file if it is on the classpath
.
An example to get properties from the classpath:
Properties prop = new Properties();
try {
//load properties from the class path
prop.load(this.getClass().getClassLoader().getResourceAsStream("myproperties.properties"));
//get the property
System.out.println(prop.getProperty("mykey"));
} catch (IOException ex) {
ex.printStackTrace();
throw ex;
}
However, you can load properties if you know the path to the file on the filesystem, in this case use
prop.load(new FileInputStream("/path/to/myproperties.properties"));
If you are talking about struts.properties
The framework uses a number of properties that can be changed to fit your needs. To change any of these properties, specify the property key and value in an struts.properties file. The properties file can be locate anywhere on the classpath, but it is typically found under /WEB-INF/classes.
If you are looking for Message Resource properties it could be configured in the struts.properties
or struts.xml
the later is proffered.
<constant name="struts.custom.i18n.resources" value="path/to/resources/MessageResources"/>
the value is a filepath src/path/to/resources/MessageResources.properties
If you are looking for the proper way to configure your application consider the choice to use EasyConf.
Property files will generally either go:
/WEB-INF
Which is more appropriate depends on your needs. Classpath-based files allow bundled default property files without configuration. For example, Log4J will look for log4j.properties
at the root of the classpath as its default configuration file.
This can occasionally lead to issues, however, depending on class loading order: sometimes the system can pick up a "stray" config file. Configuring it yourself may still be preferable; I still tend towards the classpath, but config files are also commonly found in WEB-INF
. Either method works, and both styles can be configured using JNDI, init params, environment variables, or system variables (e.g., -D
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With