Dagger 2 不在 Eclipse 上生成组件
Dagger 2 not generateing components on Eclipse
我已经使用 Eclipse 创建了一个 Java 应用程序,并且我正在使用 Maven 进行包管理。几天前,我能够配置我的应用程序以使用 Dagger 1(将依赖项添加到 pom 文件,启用注释处理并将 dagger、dagger-compile、javax 和 javawriter jar 添加到工厂路径)。经过与同事的多次讨论,我们决定使用 Dagger 2。我尝试按照 Dagger 2 documentation 将 Dagger 1 实现迁移到 Dagger 2,但没有成功。
由于某些无法解释的原因,未生成带有 Dagger
前缀的 @Component
class。
因此我决定尝试 Dagger 2 Coffee sample。
我创建了一个新的 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>
我的构建失败并出现以下错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
DaggerCoffeeApp_Coffee cannot be resolved
我将 Coffee
组件接口提取到一个单独的文件(名为 Coffee.java
)并再次尝试,但我遇到了同样的错误。
我从 Dagger 1 中删除了 Factory Path jar,但结果还是一样。如果我尝试添加 Dagger 2 罐子,我会收到 Multiple problems have occurred window 以及以下错误文本
Errors occurred during the build.
Errors running builder 'Java Builder' on project 'dagger'.
com/google/common/collect/SetMultimap
我发现问题出现在我添加 dagger-compiler
jar 时。
如果我从工厂路径中删除每个 jar,构建仍然会失败。
我试图找到 DaggerCoffee
文件,该文件应该是自动生成的,但我找不到。
如何将 Dagger 2 与 Eclipse 一起使用?我多次修改文档并花了一天时间研究这个,但到目前为止运气不好。
所以经过大量的试验和错误,我终于设法在 Eclipse 中配置 Dagger 2。我去了 Project => Properties => Java Compiler => Annotation Processing => Factory Path 并为 dagger
、dagger-compiler
、dagger-producers
、[=13= 添加了 jars ] 和 guava-18.0
。 guava-18.0
jar 是棘手的部分。我有另一个使用旧版本 guava-14.0.1
的依赖项,它首先被添加到 pom.xml
文件中。这导致旧版本的 guava
下载到我的 Maven 依赖项中,但它不适用于 Dagger 2。
所以这个故事的寓意是你应该经常检查依赖版本。
它也可以使用 m2e-apt。无需添加自定义库:
- 安装 m2e-apt
- Window -> 首选项 -> Maven -> 注释处理:
Select"Automatically configure JDT APT"
- 更新maven项目
除了 Jotschi 所说的之外,我还需要将以下内容添加到我的 pom.xml 中。注意需要设置JDK版本号,因为Maven默认使用的是v1.5,在v1.6中添加了注释代码生成:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
<dependencies>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.0.2</version>
<optional>true</optional>
</dependency>
</dependencies>
</plugin>
</plugins>
我还发现让 dagger v2.8 在 Eclipse 4.6.1 (Neon) 和 JDK 1.7 中工作有点挑战。安装 m2e-apt 并在 "Window -> Preferences -> Maven -> Annotation Processing" 和 "project/Properties -> Maven -> Annotation Processing" 中启用注释处理后,我仍然需要将插件文本添加到我的 pom.xml 文件中。这是对我有用的 POM 文件片段:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
<dependencies>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.8</version>
<optional>true</optional>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger</artifactId>
<version>2.8</version>
</dependency>
</dependencies>
我已经使用 Eclipse 创建了一个 Java 应用程序,并且我正在使用 Maven 进行包管理。几天前,我能够配置我的应用程序以使用 Dagger 1(将依赖项添加到 pom 文件,启用注释处理并将 dagger、dagger-compile、javax 和 javawriter jar 添加到工厂路径)。经过与同事的多次讨论,我们决定使用 Dagger 2。我尝试按照 Dagger 2 documentation 将 Dagger 1 实现迁移到 Dagger 2,但没有成功。
由于某些无法解释的原因,未生成带有 Dagger
前缀的 @Component
class。
因此我决定尝试 Dagger 2 Coffee sample。
我创建了一个新的 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>
我的构建失败并出现以下错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
DaggerCoffeeApp_Coffee cannot be resolved
我将 Coffee
组件接口提取到一个单独的文件(名为 Coffee.java
)并再次尝试,但我遇到了同样的错误。
我从 Dagger 1 中删除了 Factory Path jar,但结果还是一样。如果我尝试添加 Dagger 2 罐子,我会收到 Multiple problems have occurred window 以及以下错误文本
Errors occurred during the build.
Errors running builder 'Java Builder' on project 'dagger'.
com/google/common/collect/SetMultimap
我发现问题出现在我添加 dagger-compiler
jar 时。
如果我从工厂路径中删除每个 jar,构建仍然会失败。
我试图找到 DaggerCoffee
文件,该文件应该是自动生成的,但我找不到。
如何将 Dagger 2 与 Eclipse 一起使用?我多次修改文档并花了一天时间研究这个,但到目前为止运气不好。
所以经过大量的试验和错误,我终于设法在 Eclipse 中配置 Dagger 2。我去了 Project => Properties => Java Compiler => Annotation Processing => Factory Path 并为 dagger
、dagger-compiler
、dagger-producers
、[=13= 添加了 jars ] 和 guava-18.0
。 guava-18.0
jar 是棘手的部分。我有另一个使用旧版本 guava-14.0.1
的依赖项,它首先被添加到 pom.xml
文件中。这导致旧版本的 guava
下载到我的 Maven 依赖项中,但它不适用于 Dagger 2。
所以这个故事的寓意是你应该经常检查依赖版本。
它也可以使用 m2e-apt。无需添加自定义库:
- 安装 m2e-apt
- Window -> 首选项 -> Maven -> 注释处理: Select"Automatically configure JDT APT"
- 更新maven项目
除了 Jotschi 所说的之外,我还需要将以下内容添加到我的 pom.xml 中。注意需要设置JDK版本号,因为Maven默认使用的是v1.5,在v1.6中添加了注释代码生成:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
<dependencies>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.0.2</version>
<optional>true</optional>
</dependency>
</dependencies>
</plugin>
</plugins>
我还发现让 dagger v2.8 在 Eclipse 4.6.1 (Neon) 和 JDK 1.7 中工作有点挑战。安装 m2e-apt 并在 "Window -> Preferences -> Maven -> Annotation Processing" 和 "project/Properties -> Maven -> Annotation Processing" 中启用注释处理后,我仍然需要将插件文本添加到我的 pom.xml 文件中。这是对我有用的 POM 文件片段:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
<dependencies>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.8</version>
<optional>true</optional>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger</artifactId>
<version>2.8</version>
</dependency>
</dependencies>