Java Roboguice在应用程序发布时崩溃

Java Roboguice在应用程序发布时崩溃,java,android,gradle,guice,roboguice,Java,Android,Gradle,Guice,Roboguice,这很奇怪。在我最近的所有项目中,我都使用了Roboguice 2.0,使用了相同的LIB,而且看起来都很好。我开始了一个全新的项目,但在我的应用程序发布时,突然出现了一些令人毛骨悚然的错误。我到处搜索,从那开始,但所有与这个错误相关的问题,旧的或解决方案都不起作用 杰米·兰尼斯特手上的金钉子是这个噩梦的答案 我使用Android Studio和libs: - guice-3.0-no_aop - javax.inject-1 - jsr305-1.3.9 - roboguice-2.0 - in

这很奇怪。在我最近的所有项目中,我都使用了Roboguice 2.0,使用了相同的LIB,而且看起来都很好。我开始了一个全新的项目,但在我的应用程序发布时,突然出现了一些令人毛骨悚然的错误。我到处搜索,从那开始,但所有与这个错误相关的问题,旧的或解决方案都不起作用

杰米·兰尼斯特手上的金钉子是这个噩梦的答案

我使用Android Studio和libs:

- guice-3.0-no_aop
- javax.inject-1
- jsr305-1.3.9
- roboguice-2.0
- in other modules there are Spring-for-android-REST and GreenDao libs, if it matters
类扩展应用程序:

public class JudgementSearcherApp extends Application {

    @Inject private InitAppCommand initApp;

    @Override
    public void onCreate() {
        super.onCreate();
        setup();
    }

    private void setup() {
        RoboGuice.setBaseApplicationInjector(this, RoboGuice.DEFAULT_STAGE,
                RoboGuice.newDefaultRoboModule(this), new JSGuiceModule());
        RoboGuice.injectMembers(this,this);

        initApp.execute(JudgementSearcherApp.this);
    }
}
错误:

com.rudearts.judgementsarcher E/AndroidRuntime﹕ 致命异常:主 java.lang.RuntimeException:无法创建应用程序com.rudearts.judgementsarcher.judgementsarcherapp:com.google.inject.CreationException:GUI创建错误: 1) 注入构造函数java.lang.NullPointerException时出错 在com.rudearts.judgementsarcher.core.managers.LawCaseManager(未知来源) 位于com.rudearts.judgementsarcher.core.managers.LawCaseManager.class(未知来源) 查找com.rudearts.judgementsarcher.core.managers.LawCaseManager时 用于com.rudearts.judgementsarcher.controller.setup.commands.LoadLastUpdateDateCommand.lawCaseState中的字段(未知源) 查找com.rudearts.judgementsarcher.controller.setup.commands.LoadLastUpdateDateCommand时 用于com.rudearts.judgementsarcher.controller.setup.commands.InitAppCommand.loadDate(未知源)处的字段 查找com.rudearts.judgementsarcher.controller.setup.commands.InitAppCommand时 用于com.rudearts.judgementsarcher.judgementsarcherapp.initApp中的字段(未知源) 在roboguice.config.DefaultRoboModule.configure(DefaultRoboModule.java:141)中 在roboguice.config.DefaultRoboModule.configure(DefaultRoboModule.java:141)中 在定位android.app.Application时 用于roboguice.util.Ln$BaseConfig处的参数0。(未知源) 查找roboguice.util.Ln$BaseConfig时 对于roboguice.util.Ln.config处的字段(未知源) 1错误 位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:3291) 在android.app.ActivityThread.access$2200(ActivityThread.java:121) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:981) 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:130) 位于android.app.ActivityThread.main(ActivityThread.java:3770) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:507) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670) 在dalvik.system.NativeStart.main(本机方法) 原因:com.google.inject.CreationException:Guice创建错误: 1) 注入构造函数java.lang.NullPointerException时出错 在com.rudearts.judgementsarcher.core.managers.LawCaseManager(未知来源) 位于com.rudearts.judgementsarcher.core.managers.LawCaseManager.class(未知来源) 查找com.rudearts.judgementsarcher.core.managers.LawCaseManager时 用于com.rudearts.judgementsarcher.controller.setup.commands.LoadLastUpdateDateCommand.lawCaseState中的字段(未知源) 查找com.rudearts.judgementsarcher.controller.setup.commands.LoadLastUpdateDateCommand时 用于com.rudearts.judgementsarcher.controller.setup.commands.InitAppCommand.loadDate(未知源)处的字段 查找com.rudearts.judgementsarcher.controller.setup.commands.InitAppCommand时 用于com.rudearts.judgementsarcher.judgementsarcherapp.initApp中的字段(未知源) 在roboguice.config.DefaultRoboModule.configure(DefaultRoboModule.java:141)中 在roboguice.config.DefaultRoboModule.configure(DefaultRoboModule.java:141)中 在定位android.app.Application时 用于roboguice.util.Ln$BaseConfig处的参数0。(未知源) 查找roboguice.util.Ln$BaseConfig时 对于roboguice.util.Ln.config处的字段(未知源) 1错误 位于com.google.inject.internal.Errors.ThrowCreationExceptionIferErrorSexist(Errors.java:435) 在com.google.inject.internal.InternalInjectorCreator.injectDynamics上(InternalInjectorCreator.java:175) 在com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)上 位于com.google.inject.Guice.createInjector(Guice.java:95) 位于com.google.inject.Guice.createInjector(Guice.java:83) 位于roboguice.roboguice.setBaseApplicationInjector(roboguice.java:94) 位于com.rudearts.judgementsarcher.judgementsarchareapp.setup(judgementsarchareapp.java:26) 在com.rudearts.judgementsarcher.judgementsarcherapp.onCreate(judgementsarchera)上


好了,伙计们,我自己找到的

我在singleton LawCaseManager中注入了util类,该类是在应用程序创建过程中注入的。我搜索了一些注入周期/无限循环或竞争条件,但没有找到任何明显的

总而言之,当我删除singleton类中的注入时,一切都像往常一样工作。我搜索了我以前的项目,发现我只在数据管理器中使用singleton,数据管理器持有应用程序状态,没有一个具有任何其他类的注入。我很好奇,这是一个特定的情况还是一个大规则,guice禁止在单例类内注入?:O