我用Eclipse创建了一个Java应用程序,并使用Maven进行包管理。(添加对POM文件的依赖关系,启用注解处理并添加dagger,dagger-compile,javax和javawriter jar到工厂路径)。经过与同事的几次讨论,我们决定使用Dagger 2。我尝试按照Dagger 2 documentation将Dagger 1实现迁移到Dagger 2,但没有成功。
由于某些无法解释的原因,没有生成带有Dagger
前缀的@Component
类。
正因为如此,我决定尝试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 jar,则会出现Multiple problems have occurred窗口,其中包含以下错误文本Errors occurred during the build. Errors running builder 'Java Builder' on project 'dagger'. com/google/common/collect/SetMultimap
我发现这个问题是在添加dagger-compiler
jar时出现的。
如果我从工厂路径中删除每个jar,构建仍然失败。
我试图找到DaggerCoffee
文件,这应该是自动生成的,但我找不到它。
我如何在Eclipse中使用Dagger 2?我多次查看文档,并花了一天的时间研究这个问题,但到目前为止没有运气。
4条答案
按热度按时间xj3cbfub1#
当前Eclipse IDE(2022年12月及更高版本):
较早的Eclipse版本:
它也可以使用m2 e-apt来工作,不需要添加自定义库:
0g0grzrc2#
因此,经过大量的尝试和错误,我终于设法在Eclipse中配置了Dagger 2。我转到项目=〉属性=〉Java编译器=〉注解处理=〉工厂路径,并添加了
dagger
,dagger-compiler
,dagger-producers
,javax.inject-1
和guava-18.0
。guava-18.0
jar是棘手的部分。我有另一个依赖项,使用了guava-14.0.1
的旧版本,它首先被添加到pom.xml
文件中。这导致旧版本的guava
下载到我的maven依赖项中,但它不适用于Dagger 2。因此,这个故事的寓意是,您应该始终检查依赖关系版本。
sqougxex3#
除了Jotschi所说的,我还需要将以下内容添加到pom中,注意需要设置JDK版本号,因为Maven使用的默认版本是v1.5,而注解代码生成是在v1.6中添加的:
huwehgph4#
我还发现让dagger v2.8在Eclipse4.6.1中工作( neon )使用JDK 1.7有点挑战,安装了m2 e-apt并在“窗口-〉首选项-〉Maven -〉注解处理”和“项目/属性-〉Maven -〉注解处理”中启用注解处理后,我仍然需要将插件文本添加到pom.xml文件中,下面是POM文件的片段: