我使用RoboGuice 3.0 alpha-2,已经使用了很长一段时间了,我对此很满意。现在我想升级到RoboGuice3.0或-3.01,但我无法工作。
我使用Eclipse (我在某些项目中使用Android,但我真的不喜欢它),RoboBlender抱怨AnnotationDatabaseImpl不在那里。当我关掉机器搅拌器的时候,我会
E/AndroidRuntime(18825): FATAL EXCEPTION: main
E/AndroidRuntime(18825): java.lang.NoClassDefFoundError: com.google.inject.internal.util.$Maps
E/AndroidRuntime(18825): at com.google.inject.assistedinject.BindingCollector.<init>(BindingCollector.java:34)
E/AndroidRuntime(18825): at com.google.inject.assistedinject.FactoryModuleBuilder.<init>(FactoryModuleBuilder.java:206)
E/AndroidRuntime(18825): at com.loqli.android.robo.GossipModule.configure(GossipModule.java:260)
E/AndroidRuntime(18825): at com.google.inject.AbstractModule.configure(AbstractModule.java:78)
E/AndroidRuntime(18825): at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:252)
E/AndroidRuntime(18825): at com.google.inject.spi.Elements.getElements(Elements.java:107)
E/AndroidRuntime(18825): at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:135)
E/AndroidRuntime(18825): at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
E/AndroidRuntime(18825): at com.google.inject.Guice.createInjector(Guice.java:100)
E/AndroidRuntime(18825): at com.google.inject.Guice.createInjector(Guice.java:87)
E/AndroidRuntime(18825): at roboguice.RoboGuice.createGuiceInjector(RoboGuice.java:186)
E/AndroidRuntime(18825): at roboguice.RoboGuice.getOrCreateBaseApplicationInjector(RoboGuice.java:151)
E/AndroidRuntime(18825): at roboguice.RoboGuice.getOrCreateBaseApplicationInjector(RoboGuice.java:90)我回到了alpha-2,但现在我想知道,RG和RB应该与Eclipse和ant一起工作吗?
编辑:我提到了"Eclipse“。我对它在Android上的工作方式不感兴趣,我想知道如何使它在Eclipse中工作。
发布于 2015-06-13 09:13:59
eclipse中正确的方法将是将RoboBlender设置为注释处理器。但这并没有奏效(见下文)。
Maven -工作解决方案
这是我怎么让它工作的-使用Maven。Maven将注释数据库生成为target\generated-sources\annotations。因此,我只是在eclipse和voilà中添加了这个路径作为源文件夹,不再使用java.lang.ClassNotFoundException: AnnotationDatabaseImpl!
类似的解决方案?
从你的问题上我猜你在用蚂蚁?!也许你可以用使用ant设置注释处理代替maven?
Eclipse注释处理器--一种进一步的方法
如前所述,我第一次尝试使用eclipse注释处理器,几乎可以让它正常工作。我将RoboBlender及其传递依赖关系添加到工厂路径。对于RoboBlender 3.0.1,这是
因为我在注释数据库中使用了多个模块,所以我添加了处理器选项guiceAnnotationDatabasePackageName。
这在我的eclipse日志中产生了一条信息消息,上面写着Impossible to generate annotation database.,这正是RoboGuice的AnnotationDatabaseGenerator引发的通用异常的消息。

不幸的是,没有堆栈痕迹或任何东西,所以我放弃了这里,找到了使用maven的解决方案,如上面所述。也许其他人能在这里找到丢失的那块?
如果它能帮助您找到我使用RoboBlender 这里的项目。
发布于 2014-12-10 19:56:00
AnnotationDatabaseImpl类是由RoboBlender在编译时生成的。
可以将以下内容指定为Java参数(使用您的包名)
-AguiceAnnotationDatabasePackageName=some.package.name.here这将在编译时生成所需的类。
然后,在您的清单中,您需要指向同一个包。
<meta-data android:name="roboguice.annotations.packages" android:value="some.package.name.here"/>对于maven设置,请参考这里的答案:
https://stackoverflow.com/questions/27387029
复制相似问题