You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by Leon Messerschmidt <le...@psybergate.com> on 2004/08/05 07:46:00 UTC

ClasspathResourceLoader & Struts

Hi All,

I'm using the ClasspathResourceLoader with Struts & Tiles.  I therefor
need to have a leading "/" in my template names in my tiles-defs file.

This seem to fail with ClasspathResourceLoader (Sun JDK 1.4.2 / linux).
  I tested this with:

this.getClass().getClassLoader.getResource("/path/to/resource")
this.getClass().getClassLoader.getResource("path/to/resource")

The first one fails, while the second one works.  The only reference 
that I could find in mailing lists archives wat that it would not work 
with the leading "/".

To fix the problem I added the following to ClasspathResourceLoader:

if (result == null && name.startsWith("/")) {
   result = classLoader.getResourceAsStream(name.substring(1));
}

It this something that should go into Velocity Tools, or am I just being 
stupid ;-)

~ Leon

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org


Re: ClasspathResourceLoader & Struts

Posted by Shinobu Kawai <sh...@gmail.com>.
Hi Daniel,

> Leon, what servlet or J2EE container are you using?  A customer class
> loader may be getting in the way of the expected behavior.
I know it doesn't work for Tomcat.  :(
    http://issues.apache.org/bugzilla/show_bug.cgi?id=31703

> > The leading "/" works if the resource is placed in WEB-INF/classes but
> > breaks inside a .jar file in WEB-INF/lib

Best regards,
-- Shinobu Kawai

-- 
Shinobu Kawai <sh...@gmail.com>

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org


Re: ClasspathResourceLoader & Struts

Posted by "Daniel L. Rall" <dl...@finemaltcoding.com>.
Leon, what servlet or J2EE container are you using?  A customer class
loader may be getting in the way of the expected behavior.

On Fri, 2004-08-06 at 08:41 +0200, Leon Messerschmidt wrote:
> Just something to make it even more strage...
> 
> The leading "/" works if the resource is placed in WEB-INF/classes but 
> breaks inside a .jar file in WEB-INF/lib
> 
> ~ Leon
> 
> Geir Magnusson Jr wrote:
> > 
> > On Aug 4, 2004, at 10:46 PM, Leon Messerschmidt wrote:
> > 
> >> Hi All,
> >>
> >> I'm using the ClasspathResourceLoader with Struts & Tiles.  I therefor
> >> need to have a leading "/" in my template names in my tiles-defs file.
> >>
> >> This seem to fail with ClasspathResourceLoader (Sun JDK 1.4.2 / linux).
> >>  I tested this with:
> >>
> >> this.getClass().getClassLoader.getResource("/path/to/resource")
> >> this.getClass().getClassLoader.getResource("path/to/resource")
> >>
> >> The first one fails, while the second one works.  The only reference 
> >> that I could find in mailing lists archives wat that it would not work 
> >> with the leading "/".
> >>
> >> To fix the problem I added the following to ClasspathResourceLoader:
> >>
> >> if (result == null && name.startsWith("/")) {
> >>   result = classLoader.getResourceAsStream(name.substring(1));
> >> }
> >>
> >> It this something that should go into Velocity Tools, or am I just 
> >> being stupid ;-)
> > 
> > 
> > Into ClasspathResourceLoader
> > 
> > I'm surprised that this changed, or that it's not documented in the JDK 
> > javadocs.
> > 
> > geir
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: velocity-dev-help@jakarta.apache.org
-- 
Daniel L. Rall <dl...@finemaltcoding.com>


---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org


Re: ClasspathResourceLoader & Struts

Posted by Leon Messerschmidt <le...@psybergate.com>.
Just something to make it even more strage...

The leading "/" works if the resource is placed in WEB-INF/classes but 
breaks inside a .jar file in WEB-INF/lib

~ Leon

Geir Magnusson Jr wrote:
> 
> On Aug 4, 2004, at 10:46 PM, Leon Messerschmidt wrote:
> 
>> Hi All,
>>
>> I'm using the ClasspathResourceLoader with Struts & Tiles.  I therefor
>> need to have a leading "/" in my template names in my tiles-defs file.
>>
>> This seem to fail with ClasspathResourceLoader (Sun JDK 1.4.2 / linux).
>>  I tested this with:
>>
>> this.getClass().getClassLoader.getResource("/path/to/resource")
>> this.getClass().getClassLoader.getResource("path/to/resource")
>>
>> The first one fails, while the second one works.  The only reference 
>> that I could find in mailing lists archives wat that it would not work 
>> with the leading "/".
>>
>> To fix the problem I added the following to ClasspathResourceLoader:
>>
>> if (result == null && name.startsWith("/")) {
>>   result = classLoader.getResourceAsStream(name.substring(1));
>> }
>>
>> It this something that should go into Velocity Tools, or am I just 
>> being stupid ;-)
> 
> 
> Into ClasspathResourceLoader
> 
> I'm surprised that this changed, or that it's not documented in the JDK 
> javadocs.
> 
> geir
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org


Re: ClasspathResourceLoader & Struts

Posted by Geir Magnusson Jr <ge...@4quarters.com>.
On Aug 4, 2004, at 10:46 PM, Leon Messerschmidt wrote:

> Hi All,
>
> I'm using the ClasspathResourceLoader with Struts & Tiles.  I therefor
> need to have a leading "/" in my template names in my tiles-defs file.
>
> This seem to fail with ClasspathResourceLoader (Sun JDK 1.4.2 / linux).
>  I tested this with:
>
> this.getClass().getClassLoader.getResource("/path/to/resource")
> this.getClass().getClassLoader.getResource("path/to/resource")
>
> The first one fails, while the second one works.  The only reference 
> that I could find in mailing lists archives wat that it would not work 
> with the leading "/".
>
> To fix the problem I added the following to ClasspathResourceLoader:
>
> if (result == null && name.startsWith("/")) {
>   result = classLoader.getResourceAsStream(name.substring(1));
> }
>
> It this something that should go into Velocity Tools, or am I just 
> being stupid ;-)

Into ClasspathResourceLoader

I'm surprised that this changed, or that it's not documented in the JDK 
javadocs.

geir

-- 
Geir Magnusson Jr                                   203-247-1713(m)
geir@4quarters.com


---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org