java Dagger 2未在Eclipse上生成组件

n3ipq98p  于 2023-02-20  发布在  Java
关注(0)|答案(4)|浏览(140)

我用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?我多次查看文档,并花了一天的时间研究这个问题,但到目前为止没有运气。

xj3cbfub

xj3cbfub1#

当前Eclipse IDE(2022年12月及更高版本):

  • 窗口-〉首选项-〉Maven -〉注解处理:选择“自动配置JDT APT”

较早的Eclipse版本:
它也可以使用m2 e-apt来工作,不需要添加自定义库:

  • 安装m2 e-apt(较新的eclipse版本不需要)
  • 窗口-〉首选项-〉Maven -〉注解处理:选择“自动配置JDT APT”
  • 更新maven项目
0g0grzrc

0g0grzrc2#

因此,经过大量的尝试和错误,我终于设法在Eclipse中配置了Dagger 2。我转到项目=〉属性=〉Java编译器=〉注解处理=〉工厂路径,并添加了daggerdagger-compilerdagger-producersjavax.inject-1guava-18.0guava-18.0 jar是棘手的部分。我有另一个依赖项,使用了guava-14.0.1的旧版本,它首先被添加到pom.xml文件中。这导致旧版本的guava下载到我的maven依赖项中,但它不适用于Dagger 2。
因此,这个故事的寓意是,您应该始终检查依赖关系版本。

sqougxex

sqougxex3#

除了Jotschi所说的,我还需要将以下内容添加到pom中,注意需要设置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>
huwehgph

huwehgph4#

我还发现让dagger v2.8在Eclipse4.6.1中工作( neon )使用JDK 1.7有点挑战,安装了m2 e-apt并在“窗口-〉首选项-〉Maven -〉注解处理”和“项目/属性-〉Maven -〉注解处理”中启用注解处理后,我仍然需要将插件文本添加到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>

相关问题