*
The moose likes Java in General and the fly likes adding a property file to a jar Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "adding a property file to a jar" Watch "adding a property file to a jar" New topic
Author

adding a property file to a jar

pavan babu
Greenhorn

Joined: Sep 02, 2008
Posts: 15
hi,

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.

Any inputs are highly apreciated.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14074
    
  16

Welcome to JavaRanch.

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 ]

Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
pavan babu
Greenhorn

Joined: Sep 02, 2008
Posts: 15
Hi Jesper ,

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 ?
Norm Radder
Ranch Hand

Joined: Aug 10, 2005
Posts: 685
use it in another application it is throwing resource not found exception.

How does the other application access the jar file with the properties file?
Is it on the JVM's classpath? What method does the app use?
pavan babu
Greenhorn

Joined: Sep 02, 2008
Posts: 15
the jar is placed in the classpath and there are three methods which access the property file inside the jar.I am using fileinputstream class to read the properties file.
Rene Larsen
Ranch Hand

Joined: Oct 12, 2001
Posts: 1179

Originally posted by pavan babu:
I am using fileinputstream class to read the properties file.


Please read what Jesper wrote...


Regards, Rene Larsen
Dropbox Invite
Jenna Thomas
Greenhorn

Joined: Oct 03, 2005
Posts: 27
Thank you Jesper! I realize this is an almost 4 year old post- but it helped me resolve my issue. Id been trying to read a properties file from a jar using the following:

FileInputStream fin = new FileInputStream(path);
props = new Properties();
props.load(fin);

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!

InputStream fin=null;
fin=ClassLoader.getSystemResourceAsStream(path); //this is a static function
props = new Properties();
props.load(fin);

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.

Cheers!
Jenn SCJP1.5
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: adding a property file to a jar
 
Similar Threads
Jar a project with property files in it external to jar
Refering a jar file from another jar
Location of properties jar in an EAR
Property Files inside Jar File
how to deal with the property file that could be modified by user