• Post Reply Bookmark Topic Watch Topic
  • New Topic

Embedding config file in a jar  RSS feed

 
Don Stadler
Ranch Hand
Posts: 451
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Recently I've been trying to embed an xml configuration file into a jar file and cannot seem to understand how the classloader handles this. The file is located in <project root>/config of the jar. I am trying to read the contents using:

InputStream periodicalsXml = this.getClass().getResourceAsStream( "config/periodicallist.xml");

But I get a null InputStream.

I gather that something needs to be done to the MANIFEST.MF file (to define the classpath???), but the explanations I have been reading are rather inscrutable on the point. My current MANIFEST.MF file is minimal:

====================================================================
Manifest-Version: 1.0
Created-By: 1.3.1 (Apple Computer, Inc.)
=====================================================================

What I am trying to do should be rather simple but has not proven so. I want to stuff this xml config file into a DOM and then play with it - but cannot unless I can find it! Can anyone explain what needs to be done or point me to a URL which explains this well (this is a regular class, not an applet, BTW).

Thanks in advance....

Don
 
Paul Clapham
Sheriff
Posts: 22832
43
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Don Stadler:
The file is located in <project root>/config of the jar. I am trying to read the contents using:

InputStream periodicalsXml = this.getClass().getResourceAsStream( "config/periodicallist.xml");
If the class containing that code is in package a.b.c then your code will be looking for /a/b/c/config/periodicallist.xml, and that probably isn't what you want to happen. I don't know what "project root" means in your question, but if you don't want to look for the config file relative to the class that's doing the looking, then use an absolute path for the config file. That would look something like this, depending on the actual directory structure inside your jar file:Nothing to do with the manifest.
 
Don Stadler
Ranch Hand
Posts: 451
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Paul.

So if the jar was named 'root' and had a subdirectory named 'config' this should work?

[ April 10, 2007: Message edited by: Don Stadler ]
 
Paul Clapham
Sheriff
Posts: 22832
43
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The name of the jar is irrelevant. You need to provide the full path in the directory structure inside the jar.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!