java - 使用 Gin 编译时遇到问题

标签 java gwt dependency-injection guice gwt-gin

我正在使用 Gin 1.5 和 GWT 2.4 在我添加 Gin 之前构建的项目很好,但现在它没有:

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

错误是:

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)

我做错了什么?我的类路径中有 guice-assistedinject-snapshot.jarguice-snapshot.jar,按顺序排列。

导致错误的行在我的入口点类中是:

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

FooGinjector.java:

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

  EventBus eventBus();

  PlaceHistoryHandler historyHandler();

}

最佳答案

我将 assistedinject jar 移动到类路径中其他 gin jar 的上方,现在它似乎工作正常。

关于java - 使用 Gin 编译时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237199/

相关文章:

java - 为什么迭代器对于非连续容器更快?

java - 在 Java 中使用 SOAP Web 服务(具有安全性)

具有依赖关系的子 ViewModel 的 WPF/MVVM 导航

用于检查 isNumeric() 的 Java TextBox KeyReleased 事件

java - GWT 请求工厂 - 创建并保留对象 - 代理是否应该自动填充 id?

java - 检查当前日期日期是否在当前月份内

GWT 编译挂起

java - 在 Guice 中使用命名注入(inject)

c# - 构造函数中的 HttpContext null

java - 如何在 onAction 事件方法中的默认文本编辑器中打开文件(Headless Graphics 环境)