Java中没有发现Dagger组件错误?

问题描述 投票:0回答:1
public class ToInject {
    public int val = 0;

    public ToInject(){
        System.out.println("Default");
    }
}
@Module
public class ToInjectModule {
    @Provides
    @Singleton
    public ToInject provideToInject(){
        return new ToInject();
    }
}
@Component(modules = ToInjectModule.class)
public interface ToInjectModuleComponent {
    WillGetInjected willGetInjectedMaker();
}
public class WillGetInjected {
    private ToInject toInject;
    @Inject
    public WillGetInjected(ToInject toInject){
        this.toInject = toInject;
        System.out.println(this.toInject.val);
    }
}

我正试图将ToInject注入WillGetInjected,如上所示。我有一个ToInjectModule和als a ToInjectModuleComponent所以我完全按照说明完成。我也进口了

<dependency>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger</artifactId>
            <version>2.0</version>
        </dependency>

但是当我做mvn compile时,我一直收到这个错误:

Fatal error compiling: java.lang.NoClassDefFoundError: dagger/Subcomponent$Builder: dagger.Subcomponent$Builder -> [Help 1]

知道发生了什么,为什么?

java dagger
1个回答
0
投票

有两次失误。

  1. dagger compiler添加到pom.xmlLink
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.6.1</version>
      <configuration>
        <annotationProcessorPaths>
          <path>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>2.x</version>
          </path>
        </annotationProcessorPaths>
      </configuration>
    </plugin>
  </plugins>
</build>
  1. annotation scope添加到组件中。 (LinkSingletons and Scoped Bindings
@Component(modules = ToInjectModule.class)
public interface ToInjectModuleComponent {
    WillGetInjected willGetInjectedMaker();
}

@Singleton
@Component(modules = ToInjectModule.class)
public interface ToInjectModuleComponent {
    WillGetInjected willGetInjectedMaker();
}
© www.soinside.com 2019 - 2024. All rights reserved.