> -----Original Message-----
> From: Rick Mann [mailto:[EMAIL PROTECTED]
> Sent: Thursday, 5 January 2006 8:03 PM
> To: Ant Users List
> Subject: Re: Loading resources from my task's JAR?
>
>
> On Jan 5, 2006, at 1:04 AM, Steve Loughran wrote:
>
> > this should work. make sure you have put the template into
> the JAR.
> > the <jar> task may need to explicitly ask for it, or you should be
> > using <copy> to copy the files from their source dir to
> build/ classes
> > or wherever.
> >
> > I would have an "unjar" target that used <unjar> to unjar a
> jar just
> > built, so you can see what is going on. Once you are 100% sure that
> > the resource is going in, then you can worry about classloading.
>
> I have verified this. Here's the output of jar tf:
>
> $ jar tf targets/task/dbgen-1.1.jar
> META-INF/
> META-INF/MANIFEST.MF
> com/
> com/mycompany/
> com/mycompany/tools/
> com/mycompany/tools/dbgen/
> com/mycompany/tools/dbgen/BaseClass.tmpl <--
> com/mycompany/tools/dbgen/Class.tmpl <--
> com/mycompany/tools/dbgen/Column.class
> com/mycompany/tools/dbgen/DBClassGenerator.class
> com/mycompany/tools/dbgen/DBClassGeneratorCLI.class
> com/mycompany/tools/dbgen/DBGenAntTask.class
> com/mycompany/tools/dbgen/PInterface.tmpl <--
> com/mycompany/tools/dbgen/Table.class
>
> The System property java.class.path does not contain my jar
> or any of its classes, but obviously they're getting loaded
> because the code is executing. It may not be significant that
> my classes aren't in the system classpath. However, I'm not
> sure what the classloader arrangement is in this case (I
> don't know exactly what happens when
> Class.forName() is called).
>
> Now, I'm using the executing class' getResourceAsStream(), so
> one would think it would know where the jar file was.
This is not a issue of locating the jar file - after all you running which
means you class is loaded which means the JRE has located the class which
means the jar is know. If you task class is
com/mycompany/tools/dbgen/DBGenAntTask.class then either of the following
two approaches should work:
getClass().getResourceAsStream("Class.tmpl");
getClass().getResourceAsStream("/com/mycompany/tools/dbgen/Class.tmpl");
/Steve.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]