This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
i want to deliver a jar to a client in which some of the classes read some values from property files.My question is
1)Is it a good idea to put property files in a jar? 2)if so how can i put a property file inside a jar? 3)If its not how can i distribute it as it may go to different persons and they may have different structures?It will be difficult for me to assume that it will be placed in a particular directory.
1. It can be a good idea to put your properties file in the JAR. A disadvantage of putting it inside the JAR is that it will be harder to edit (you'd have to extract it from the JAR and put it back in).
2. When you build the JAR file, just include it together with your class files. You can use the method getResourceAsStream() in class Class or ClassLoader to read your properties file inside the JAR file. Suppose, for example, that you have your properties file in the root of the JAR file, then you could read it inside your program like this:
[ September 03, 2008: Message edited by: Jesper Young ]
the solution you gave works when i want to read the property file from a class out side the jar.But my problem is there are some classes inside the jar which access my property files.when I add the properties file to jar and use it in another application it is throwing resource not found exception.
Is there a way to resolve it ? Does it make sense ?
Id also been using FileInputStream(like Pavan) and it wasnt working for some reason (Ive still got to figure out why). Once I replaced the code with the following, it worked!
fin=ClassLoader.getSystemResourceAsStream(path); //this is a static function
props = new Properties();
A small note regarding the "path" variable mentioned above. "path" is the path to my properties file relative to where my main class is. So, if my main is com.test and the properties file is x.properties, I placed x.properties outside com when creating the jar and path was simply x.properties.