Russell,
Are you using a main class to start your app?

If so  you need the line

 // Remove slf4j from list of classes not exposed to webapp
                webapp.setServerClasses(new String[]
{"-org.mortbay.jetty.plus.jaas.", "org.mortbay.jetty."});


In your class - see http://wiki.apache.org/tapestry/Tapestry5RunViaMain.

The reason is Jetty thinks slf4j is a 'server' class and in line with
the J2EE specification is stops it 'leaking' into web application
classloaders. This line tells it to let it through.

THis only effects T5 pages/components when you are using the
runViaMain method. It won't effect your non T5 classes as they are
loaded in the system classloader. Whereas the enhanced T5
pages/components load in the web class loader.

Thanks

Ben


On Thu, Sep 25, 2008 at 5:05 PM, Russell Brown <[EMAIL PROTECTED]> wrote:
>
> Hi Toby,
> Thanks for that. I have suspicion I have a maven nightmare on my hands. I 
> have used maven's "exlusion" to exclude SLF4j from being included by Tapestry 
> as we want to control the version. I can see that the Pages and Components 
> use a different class loader, I guess they have to for all that run time 
> transformation that is going on but they _should_ be able to load classes 
> that their parents can in my humble opinion.
>
> I've just had a double, triple check and there is only one SLF4j jar on the 
> classpath, the one I intended to have there. The one that my Struts actions 
> can access.
>
> I'll keep digging for now. Thanks for the help, it does confirm that my main 
> problem is probably maven/dependancy based but exacerbated by Tapestry's 
> class loading.
>
> Cheers
>
> Russell
>
>
> -----Original Message-----
> From: Toby Hobson [mailto:[EMAIL PROTECTED]
> Sent: Thu 9/25/2008 5:00 PM
> To: Tapestry users
> Subject: Re: T5: 5.0.14 Bizarre ClassNotFoundException
>
> Hi Russel,
>
> Just a thought but it might be worth checking your classpath. T5 will pull
> SLF4 into the classpath anyway so you could have included it twice. Because
> T5 uses a separate classloader for Pages and Components it may be getting
> confused. I've run into similar problems before.
>
> Cheers
>
> Toby
>
> 2008/9/25 Russell Brown <[EMAIL PROTECTED]>
>
> > Hi,
> > Not sure if this is totally a T5 issue but I am just seeing if anyone has
> > seen this. I have a page that uses the Form component but when I call the
> > page I get a ClassNotFoundException for org.slf4j.Logger. Now I know that
> > the class is on the classpath as I have Struts app running in the same
> > container and Calling Class.forName("org.slf4j.Logger", true,
> > this.getClass().getClassLoader()) in a struts action yields a class but the
> > toClass method in
> > org.apache.tapestry5.internal.services.InternalClassTransformationImpl
> > throws a ClassNotFoundException.
> >
> > If I change the code in that class to use the parent of the parent class
> > loader then the class is found.
> >
> > Any ideas? Is this a bug, is there some way to make Tapestry's class loader
> > aware of the Class?
> >
> > Cheers
> >
> > Russell
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to