Guys, The customloader jar worked a treat, much appreciated =)
2009/9/10 Stuart McCulloch <[email protected]> > 2009/9/10 Josh McDonald <[email protected]> > >> OK, thanks heaps for the pointers guys. I'll go through my stuff and >> double check no package-protected classes are being injected into, and so >> on. Some of those links I read but wasn't sure they applied to me as I'm not >> using OSGI, and I'm deploying into TC6. I did come across the @Provides >> initContext solution but it didn't help in my situation. >> > > the bridge classloading applies whenever you run inside a container that > uses its > own custom classloaders (such as OSGi, TC6, etc...) it doesn't actually > contain > anything specific to OSGi > > if you want a build with 343 applied you can use: > > > http://peaberry.googlecode.com/svn/trunk/lib/build/guice-2.0-customloader.jar > > you could also try turning off the bridge classloading completely: > > "-Dguice.custom.loader=false" > > Jesse if you're reading, is the 343 patch already in trunk? Since I've got >> to check out the source and build it myself to apply a patch either way, I >> might as well try using trunk and see how it goes. >> > > 343 is not in yet - I need to iron out a minor detail with Jesse and add > some tests > > >> Also wondering if there's some noisy debug logging I can enable that will >> help me diagnose *which* of my classes are causing the problems in future? I >> hate not being able to solve my own damned mess :) >> > > if you turn on FINE logging then it should tell you whenever it creates the > bridge > classloaders, as well as any FastClass/Enhancer requests - which should > help > > HTH > > >> -Josh >> >> 2009/9/10 Stuart McCulloch <[email protected]> >> >>> 2009/9/9 Jean-Eudes COUIGNOUX <[email protected]> >>> >>>> Hi, >>>> >>>> I've the same issue in a previous thread. >>>> >>>> >>>> http://groups.google.com/group/google-guice/browse_thread/thread/462c77c6b07246bd >>>> >>>> My problem were the line >>>> bind(Context.class).to(InitialContext.class); >>>> >>>> I replace this by >>>> >>>> @Provides >>>> public Context initContext() { >>>> try { >>>> return new InitialContext(); >>>> } catch (NamingException e) { >>>> throw new RuntimeException("Unable to initialize >>>> context.",e); >>>> } >>>> } >>>> >>> >>> I think patch 343 would also fix it (and let you keep the original code) >>> because InitialContext comes from the system/container classloader >>> which is the situation that 343 addresses. >>> >>> but if you can't use a patched build that's one way to workaround it... >>> >>> >>>> 2009/9/9 Stuart McCulloch <[email protected]> >>>> >>>>> 2009/9/9 Josh McDonald <[email protected]> >>>>> >>>>>> Hey guys, >>>>>> >>>>>> I've recently upgraded an app from Guice 1.0, and I'm getting a >>>>>> ClassNotFoundException: >>>>>> com.google.inject.internal.cglib.reflect.FastClass >>>>>> which makes no sense, as >>>>>> com.google.inject.internal.cglib.reflect.FastClass >>>>>> is in guice-2.0.jar :-/ >>>>>> >>>>>> Any ideas? I've been pulling my hair out for hours :-/ >>>>>> >>>>> >>>>> you might want to see if it works with the following patch: >>>>> >>>>> http://code.google.com/p/google-guice/issues/detail?id=343 >>>>> >>>>> for background about the classloading situation see: >>>>> >>>>> http://code.google.com/p/google-guice/wiki/ClassLoading >>>>> http://code.google.com/p/google-guice/wiki/OSGi >>>>> >>>>> HTH >>>>> >>>>> >>>>>> Code: >>>>>> >>>>>> public class Bootstrapper extends GuiceServletContextListener { >>>>>> >>>>>> public static Injector applicationInjector; >>>>>> >>>>>> @Override >>>>>> protected Injector getInjector() { >>>>>> >>>>>> Injector injector = Guice.createInjector( >>>>>> >>>>>> PersistenceService.usingJpa() >>>>>> .across(UnitOfWork.TRANSACTION) >>>>>> .addAccessor(LoginUserFinder.class) >>>>>> .addAccessor(PlayerFinder.class) >>>>>> .addAccessor(AgentFinder.class) >>>>>> .addAccessor(CoachFinder.class) >>>>>> .addAccessor(MembershipFinder.class) >>>>>> .buildModule(), >>>>>> >>>>>> FlexModule.buildModule(), >>>>>> >>>>>> new ServletModule() { >>>>>> >>>>>> @Override >>>>>> protected void configureServlets() { >>>>>> >>>>>> serve("/upload").with(UploadServlet.class, >>>>>> processWith(EntityImageProcessor.class)); >>>>>> >>>>>> serve("/download/*").with(DownloadServlet.class); >>>>>> >>>>>> serve("/incoming/*").with(IncomingVideoServlet.class); >>>>>> } >>>>>> }, >>>>>> >>>>>> BasketballExpressionsModule.buildModule()); >>>>>> >>>>>> //Kick start JPA. >>>>>> injector.getInstance(PersistenceInitializer.class).start(); >>>>>> >>>>>> applicationInjector = injector; >>>>>> >>>>>> return injector; >>>>>> } >>>>>> >>>>>> private Map<String, String> processWith(Class<? extends >>>>>> UploadProcessor> processorClass) { >>>>>> >>>>>> Map<String, String> params = new HashMap<String, String>(); >>>>>> params.put("processorClass", processorClass.getName()); >>>>>> >>>>>> return params; >>>>>> } >>>>>> } >>>>>> >>>>>> // ------------------------------------------------------------------- >>>>>> >>>>>> public class BasketballExpressionsModule extends AbstractModule { >>>>>> >>>>>> public void configure() { >>>>>> >>>>>> >>>>>> bindConstant().annotatedWith(JpaUnit.class).to("BasketballExpressionsPU"); >>>>>> bind(Context.class).to(InitialContext.class); >>>>>> >>>>>> bind(String.class).annotatedWith(Names.named("uploadFileLocation")).toProvider(JndiIntegration.fromJndi(String.class, >>>>>> "java:comp/env/basketballExpressions/uploadFileLocation")); >>>>>> >>>>>> bind(String.class).annotatedWith(Names.named("incomingVideoLocation")).toProvider(JndiIntegration.fromJndi(String.class, >>>>>> "java:comp/env/basketballExpressions/incomingVideoLocation")); >>>>>> } >>>>>> >>>>>> public static BasketballExpressionsModule buildModule() { >>>>>> return new BasketballExpressionsModule(); >>>>>> } >>>>>> } >>>>>> >>>>>> -- >>>>>> "Therefore, send not to know For whom the bell tolls. It tolls for >>>>>> thee." >>>>>> >>>>>> Josh 'G-Funk' McDonald >>>>>> - [email protected] >>>>>> - http://twitter.com/sophistifunk >>>>>> - http://flex.joshmcdonald.info/ >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Cheers, Stuart >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> -- >>> Cheers, Stuart >>> >>> >>> >> >> >> -- >> "Therefore, send not to know For whom the bell tolls. It tolls for thee." >> >> Josh 'G-Funk' McDonald >> - [email protected] >> - http://twitter.com/sophistifunk >> - http://flex.joshmcdonald.info/ >> >> >> >> > > > -- > Cheers, Stuart > > > > -- "Therefore, send not to know For whom the bell tolls. It tolls for thee." Josh 'G-Funk' McDonald - [email protected] - http://twitter.com/sophistifunk - http://flex.joshmcdonald.info/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-guice?hl=en -~----------~----~----~----~------~----~------~--~---
