The stack trace doesn't appear to have anything to do with Guice. I'm not really familiar with resteasy -- are you certain it's actually using Guice? It looks to me like it's just doing its own thing and failing.
On Fri, Jul 26, 2013 at 3:10 PM, <[email protected]> wrote: > Hi, > > I'm still pretty new to Guice and I feel like I'm missing something very > basic. I have an annotated object Foo that I need constructed with an > injected dependency Bar. The Bar object requires some construction on my > part that is usually handled with a Builder or Factory because of the > parameters needed for it's contractor. My simple hypothetical example might > look like the following: > > public class Foo { > private Bar bar; > > @Inject > public Foo( Bar bar ) { this.bar = bar; } > } > > public class Bar { > > public Bar( int x, int y, int z ) { > // Bar is initialized via the parameters passed to this constructor. > No default constructor provided. Normally a builder knows how to construct > Bar, but I want Guice to do it. > } > } > > Now here is my Module: > > public class FooModule implements Module > { > public void configure(final Binder binder) > { > binder.bind(Foo.class); > } > > @Provides > public Bar provideBar() { > return new Bar( 1, 2, 3 ); > } > } > > The problem is that when I start up my app, I get the following error: > > SEVERE: Exception sending context initialized event to listener instance > of class > org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener > > java.lang.RuntimeException: Unable to find a public constructor for class > Foo > > at > org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.registered( > POJOResourceFactory.java:35) > > at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory( > ResourceMethodRegistry.java:120) > > at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory( > ResourceMethodRegistry.java:106) > > at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory( > ResourceMethodRegistry.java:83) > > at org.jboss.resteasy.core.ResourceMethodRegistry.addPerRequestResource( > ResourceMethodRegistry.java:72) > > > It appears to me that it is trying to locate a default no-args constructor > and is ignoring the constructor in Foo that takes a Bar as a parameter. And > finally, it doesn't appear to now how to map that to the @Provides defined > in the module that builds the object when requested. > > > Am I missing something? Could this simply be a problem in the Resteasy > Guice implementation? Or is it just something basic about Guice that I'm > not understanding? All the examples I've downloaded and scanned seem to > always use very simple objects with default constructors. I know there's a > way to do this. I've tried adding @Named("Bar") to my @Provides method and > the corresponding @Inject method parameter. Still does not work. > > > Any help would be greatly appreciated. > > > Thanks, > > > Michael > > -- > You received this message because you are subscribed to the Google Groups > "google-guice" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/google-guice. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-guice. For more options, visit https://groups.google.com/groups/opt_out.
