Dagger 2的注释异常

时间:2015-09-26 03:29:58

标签: java web dependency-injection vaadin dagger-2

我正在尝试将Dagger 2作为我的依赖注入框架与Vaadin集成。然而,看起来可能与Vaadin和Dagger的Guava依赖项中包含的Guava版本存在冲突。我已经将构建命令缩小到IntelliJ中的vaadin:compile,结果如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project vaadin: Compilation failure
[ERROR] Failure executing javac, but could not parse the error:
[ERROR] 
[ERROR] 
[ERROR] An annotation processor threw an uncaught exception.
[ERROR] Consult the following stack trace for details.
[ERROR] java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.filterKeys(Lcom/google/common/collect/SetMultimap;Lcom/google/common/base/Predicate;)Lcom/google/common/collect/SetMultimap;

我已经尝试将构建路径中的Dagger编译器的范围更改为provided,但仍然遇到问题。

有没有办法解决Vaadin和Dagger之间的编译时问题?

1 个答案:

答案 0 :(得分:0)

因此,当您是使用Dagger的移动设备并尝试使用Maven切换到Web应用程序开发时,就会发生这种情况。我没有理解/阅读使用Dvenger 2和Maven的说明:

  

在Maven项目中,可以在依赖项中包含运行时   你的pom.xml的一部分,以及作为a的dagger-compiler工件   编译器插件的依赖:

使用Gradle,我会将导入放在build.gradle中的相同位置。我终于意识到我需要将编译器添加到maven插件编译器的pom.xml的单独部分中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
        <dependencies>
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-javac</artifactId>
                <version>1.8.6</version>
            </dependency>
            **<dependency>
                <groupId>com.google.dagger</groupId>
                <artifactId>dagger-compiler</artifactId>
                <version>2.0</version>
                <optional>true</optional>
            </dependency>**
        </dependencies>
    </plugin>

经验教训。