22

我使用 dagger 2 有一段时间了,但今天尝试编译时出现此错误:

错误:(13, 31) 错误:找不到符号类 Dagger_GlobalComponent

错误:(38, 21) 错误:找不到符号变量 Dagger_GlobalComponent

所以这里是代码:

public class MyAppApplication extends Application {

private static GlobalComponent component;

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

    component = Dagger_GlobalComponent.builder()
            .busModule(new BusModule())
            .syncModule(new SyncModule())
            .serviceModule(new ServiceModule())
            .contextModule(new ContextModule(this))
            .persistenceModule(new PersistenceModule(this))
            .build();
}}

和 gradle 依赖项:

...
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
provided 'org.glassfish:javax.annotation:10.0-b28'
...

有什么解决办法吗?已经尝试过:清理、重建、更改依赖版本,同时删除 Gradle 缓存并重新安装 Android Studio。

如果它有帮助,这个示例项目也会出现同样的错误:

https://github.com/gk5885/dagger-android-sample

https://github.com/mgrzechocinski/dagger2-example

4

3 回答 3

36

我试图在这里遵循关于 tutsplus 的 Dagger2 教程,并在尝试使用下划线语法(Dagger_ClassnameComponent)时遇到了同样的问题。

正如其他人所说,新的 Dagger API 不使用下划线语法,而只是使用语法 DaggerClassnameComponent。但是,在我的简单应用程序中尝试使用新语法时,找不到 DaggerClassnameComponent 类。我相信它应该位于 app/build/generated/source/apt/debug/packagename/component 文件夹中。

起初,我没有在上述文件夹下生成任何文件。但是,我的解决方案是清理和构建项目,然后我可以按预期使用 Component 类。

于 2015-04-12T22:15:37.187 回答
10

Dagger 2现已发布,因此您需要更改 gradle 依赖项:

compile 'com.google.dagger:dagger:2.0'
provided 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
于 2015-04-08T10:45:24.290 回答
9

看起来他们从生成的东西中删除了下划线。请参阅Dagger2 生成的类突然从 Android Studio 中丢失

于 2015-04-08T10:46:35.310 回答