Ahmed Abdeen Hamed wrote:
Hi Hannes,Thank you for your response.
I have configuration files, UIMA descriptors, models and dictionaries in my
JAR. After I deployed, the JAR is not able to see those files inside itself
and I get FIleNotFoundException when I run the JAR file the command line.
This problem disappears entirely if I extract the JAR and the files are
copied into the file system. My question is, how do I tell the JAR that
those files are already inside it instead of extracting it? The suggestion
you have given me is very handy in the case of reading a simple file
contents. But if the JAR can't see the applications' descriptors then
getting the contents as streams becomes very messy because those descriptors
have references to other descriptors. So, I am not still sure how to tell
the JAR to access all the descriptors as one problem I have with the JAR.
Any other suggestions?
Thanks again!
Ahmed
Here are perhaps 2 solutions:

1) run a process that extracts the Jar contents into the file system, at a "well known" location (maybe a temp directory), before running the application :-)

2) I don't think there is a general solution for this. For the particular case of reading the XML descriptors, where the descriptors might "import" other descriptors, this can be supported in Jar files by writing the Apache UIMA "import" elements using the "name=" attribute rather than the "location=" attribute. When you use the name= attribute, the name is looked up in the current Java class path to locate the resource. The name must not include the final ".xml" - that is appended automatically. And you can specify which subdirectory in the JAR archive the file is located in, by prefixing name with the containing directories (if any) separated by the "period" character "." -- this is the same convention used by Java itself when locating classes within packages.

-Marshall
On Mon, Aug 11, 2008 at 5:37 AM, Hannes Carl Meyer <
[EMAIL PROTECTED]> wrote:

Hi Ahmed,
yes it is possible to access files from inside the jar, but in which
context? In plain Java you can do something like this:

YourClass.class.getClassLoader().getResourceAsStream("yourpackage/resource");
Regards
Hannes

2008/8/8 Ahmed Abdeen Hamed <[EMAIL PROTECTED]>

Hello,Is there a way to tell a jar file to access its contents (txt and
config) files instead of looking for such files on the filesystem? I
created
a UIMA-based application and it is successfully working from my machine
using the command-line. However, if I put the jar on another machine it
doesn't look inside itself to access model files for examples. I have
been
looking into options and I found out that there is a way to access the
jars's internals one file at a time, and read it contents online at at
time.
However, that makes me reinvent my application again to get it to
manipulate
the files from the jars even though my program has already done that. Is
there a flag that you can turn on to tell the the jar to access its
contents
vs redoing this again programatically?
Thank you for you help!
-Ahmed


Reply via email to