3

I'm using Gin 1.5 and GWT 2.4 The project built just fine before I added Gin, but now it doesn't:

    [ERROR] [foo] - Generator 'com.google.gwt.inject.rebind.GinjectorGenerator' threw an exception while rebinding 'com.foo.html.client.FooGinjector'

The error is:

20:58:04.252 [ERROR] [foo] Generator 'com.google.gwt.inject.rebind.GinjectorGenerator' threw an exception while rebinding 'com.foo.html.client.FooGinjector'
com.google.inject.internal.ComputationException: java.lang.NoClassDefFoundError: com/google/inject/assistedinject/Assisted
    at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:553)
    at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
    at com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
    at com.google.inject.internal.FailableCache.get(FailableCache.java:46)
    at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
    at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:121)
    at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:443)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:698)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
    at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:704)
    at com.google.inject.internal.FactoryProxy.notify(FactoryProxy.java:45)
    at com.google.inject.internal.BindingProcessor.runCreationListeners(BindingProcessor.java:238)
    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:143)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:116)
    at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:101)
    at com.google.inject.Guice.createInjector(Guice.java:105)
    at com.google.inject.Guice.createInjector(Guice.java:90)
    at com.google.gwt.inject.rebind.GinjectorGenerator.generate(GinjectorGenerator.java:47)
    at com.google.gwt.core.ext.GeneratorExtWrapper.generate(GeneratorExtWrapper.java:48)
    at com.google.gwt.core.ext.GeneratorExtWrapper.generateIncrementally(GeneratorExtWrapper.java:60)
    at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:647)
    at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
    at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
    at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:268)
    at com.google.gwt.dev.shell.ShellModuleSpaceHost.rebind(ShellModuleSpaceHost.java:141)
    at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:585)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
    at com.google.gwt.core.client.GWT.create(GWT.java:97)
    at com.foo.html.client.FooGameHtml.<init>(FooGameHtml.java:39)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:465)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:375)
    at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/google/inject/assistedinject/Assisted
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:232)
    at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:92)
    at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:489)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:696)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
    at com.google.inject.internal.InjectorImpl.createProviderBinding(InjectorImpl.java:281)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:662)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
    at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:704)
    at com.google.inject.internal.InjectorImpl.createParameterInjector(InjectorImpl.java:772)
    at com.google.inject.internal.InjectorImpl.getParametersInjectors(InjectorImpl.java:760)
    at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:55)
    at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:27)
    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:35)
    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
    at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:35)
    at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:549)
    at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
    at com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
    at com.google.inject.internal.FailableCache.get(FailableCache.java:46)
    at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
    at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:121)
    at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:443)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:698)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
    at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:704)
    at com.google.inject.internal.FactoryProxy.notify(FactoryProxy.java:45)
    at com.google.inject.internal.BindingProcessor.runCreationListeners(BindingProcessor.java:238)
    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:143)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:116)
    at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:101)
    at com.google.inject.Guice.createInjector(Guice.java:105)
    at com.google.inject.Guice.createInjector(Guice.java:90)
    at com.google.gwt.inject.rebind.GinjectorGenerator.generate(GinjectorGenerator.java:47)
    at com.google.gwt.core.ext.GeneratorExtWrapper.generate(GeneratorExtWrapper.java:48)
    at com.google.gwt.core.ext.GeneratorExtWrapper.generateIncrementally(GeneratorExtWrapper.java:60)
    at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:647)
    at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
    at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
    at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:268)
    at com.google.gwt.dev.shell.ShellModuleSpaceHost.rebind(ShellModuleSpaceHost.java:141)
    at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:585)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
    at com.google.gwt.core.client.GWT.create(GWT.java:97)
    at com.foo.html.client.FooGameHtml.<init>(FooGameHtml.java:39)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:465)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:375)
    at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.google.inject.assistedinject.Assisted
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:232)
    at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:92)
    at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:489)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:696)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
    at com.google.inject.internal.InjectorImpl.createProviderBinding(InjectorImpl.java:281)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:662)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
    at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:704)
    at com.google.inject.internal.InjectorImpl.createParameterInjector(InjectorImpl.java:772)
    at com.google.inject.internal.InjectorImpl.getParametersInjectors(InjectorImpl.java:760)
    at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:55)
    at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:27)
    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:35)
    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
    at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:35)
    at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:549)
    at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
    at com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
    at com.google.inject.internal.FailableCache.get(FailableCache.java:46)
    at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
    at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:121)
    at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:443)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:698)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
    at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:704)
    at com.google.inject.internal.FactoryProxy.notify(FactoryProxy.java:45)
    at com.google.inject.internal.BindingProcessor.runCreationListeners(BindingProcessor.java:238)
    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:143)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:116)
    at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:101)
    at com.google.inject.Guice.createInjector(Guice.java:105)
    at com.google.inject.Guice.createInjector(Guice.java:90)
    at com.google.gwt.inject.rebind.GinjectorGenerator.generate(GinjectorGenerator.java:47)
    at com.google.gwt.core.ext.GeneratorExtWrapper.generate(GeneratorExtWrapper.java:48)
    at com.google.gwt.core.ext.GeneratorExtWrapper.generateIncrementally(GeneratorExtWrapper.java:60)
    at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:647)
    at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
    at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
    at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:268)
    at com.google.gwt.dev.shell.ShellModuleSpaceHost.rebind(ShellModuleSpaceHost.java:141)
    at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:585)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
    at com.google.gwt.core.client.GWT.create(GWT.java:97)
    at com.foo.html.client.FooGameHtml.<init>(FooGameHtml.java:39)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:465)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:375)
    at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Unknown Source)

What am I doing wrong? I have guice-assistedinject-snapshot.jar and guice-snapshot.jar on my classpath, in that order.

The line that causes the error is in my entry point class is:

private final FooGinjector injector = GWT.create(FooGinjector.class);

FooGinjector.java:

@GinModules(FooGinModule.class)
public interface FooGinjector extends Ginjector {

  EventBus eventBus();

  PlaceHistoryHandler historyHandler();

}
Nick Heiner
  • 119,074
  • 188
  • 476
  • 699
  • Can you show your module configuration (`FooGinModule`)? Nothing that you've shown shows any use of assisted injection. – Mark Peters Feb 13 '12 at 18:48

2 Answers2

2

I moved the assistedinject jar to be above the other gin jars in the classpath, and it appears to work fine now.

Nick Heiner
  • 119,074
  • 188
  • 476
  • 699
0

When I first saw this I thought of the obvious module inherits was missing in the gwt.xml

<!-- Other module inherits                                      -->
  <inherits name="com.google.gwt.inject.Inject"/>

Since you answered your own question, I thought I'd add in something else I found when converted over to GIN.

I converted the HelloMVP app over to GIN, based on a partial tutorial I found on the web. What I've found is adding in Activities & Places is where it gets more complicated if you aren't familiar with the guice syntax.

If you go on and try to run your code with places, you will need to know the proper bind syntax in the configure method for your GINModule:

bind(SimplePanel.class).in(Singleton.class);
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
//Notice that the interface must be declared first, then the implementation on the binding.
bind(PlaceHistoryMapper.class).to(AppPlaceHistoryMapper.class).in(Singleton.class);
bind(ActivityMapper.class).to(AppActivityMapper.class).in(Singleton.class);
etc...

This one threw me for a while as I wasn't sure how to declare the singleton here. I don't know if you got past this issue or not.

dting
  • 38,604
  • 10
  • 95
  • 114
James Drinkard
  • 15,342
  • 16
  • 114
  • 137