Dagger 2没有在Eclipse上生成组件

Iva*_*nov 6 java eclipse dependency-injection maven dagger-2

我用Eclipse创建了一个Java应用程序,我正在使用Maven进行包管理.几天前,我能够配置我的应用程序以使用Dagger 1(将依赖项添加到pom文件,启用注释处理并将dagger,dagger-compile,javax和javawriter jar添加到Factory Path).经过与同事的几次讨论,我们决定使用Dagger 2.我尝试通过遵循Dagger 2文档将Dagger 1实现迁移到Dagger 2 ,但它没有用.

由于某些无法解释的原因,不会生成@ComponentDagger前缀的类.

因此我决定尝试Dagger 2 Coffee样品.

我创建了一个新的Eclipse Java项目,将其转换为Maven,将示例代码和Dagger 2依赖项添加到pom文件中:

 <dependency>
    <groupId>com.google.dagger</groupId>
    <artifactId>dagger</artifactId>
    <version>2.0.1</version>
  </dependency>
  <dependency>
    <groupId>com.google.dagger</groupId>
    <artifactId>dagger-compiler</artifactId>
    <version>2.0.1</version>
    <optional>true</optional>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

我的构建失败,出现以下错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    DaggerCoffeeApp_Coffee cannot be resolved
Run Code Online (Sandbox Code Playgroud)

我将Coffee组件接口解压缩到一个单独的文件(命名Coffee.java)并再次尝试,但我得到了同样的错误.

我从Dagger 1中移除了Factory Path罐子,但结果仍然相同.如果我尝试添加Dagger 2 jar,我会出现多个问题已发生窗口,其中包含以下错误文本 Errors occurred during the build. Errors running builder 'Java Builder' on project 'dagger'. com/google/common/collect/SetMultimap

我发现当我添加dagger-compilerjar 时会出现问题.

如果我从Factory Path中删除每个jar,则构建仍然失败.

我试图找到该DaggerCoffee文件,应该自动生成但我找不到它.

如何在Eclipse中使用Dagger 2?我多次重复文档并花一天时间研究这个,但到目前为止没有运气.

Jot*_*chi 13

它也适用于m2e-apt.无需添加自定义库:

  • 安装m2e-apt
  • 窗口 - >首选项 - > Maven - >注释处理:选择"自动配置JDT APT"
  • 更新maven项目


Iva*_*nov 7

经过大量的试验和错误后,我终于设法在Eclipse中配置Dagger 2.我去到项目=>属性=> Java编译器=>注释处理=>工厂路径并添加了罐子dagger,dagger-compiler,dagger-producers,javax.inject-1guava-18.0.该guava-18.0罐子是棘手的部分.我有另一个使用旧版本的依赖项,guava-14.0.1它首先添加到pom.xml文件中.这导致旧版本guava下载到我的maven依赖项,但它不适用于Dagger 2.

所以故事的寓意是你应该总是检查依赖版本.

  • 我还必须在“ Java编译器”-&gt;“注释处理”中启用注释处理 (2认同)