Android:Dagger 2 会干扰 Immutables?
Android: Dagger 2 interferes with Immutables?
遇到一个非常奇怪的问题;希望你们能帮上忙。
我在我的 android 项目中使用 Immutables library 已经很长时间了,没有任何问题。不可变对象的自动生成文件位于(作为示例)build/generated/source/apt/debug/com/package/name/ImmutableClass.java
,项目编译并运行良好。
我最近决定在同一个项目中使用依赖注入并开始使用 Dagger 2。我在另一个 Java 项目(非 Android)中使用过 Guice,但之前从未使用过 Dagger。突然间,我开始收到奇怪的错误,说找不到不可变对象 class。
错误:error: cannot find symbol class ImmutableClass
.
我尝试删除我创建的 @Component
和 @Module
,错误消失了。有趣的是文件 ImmutableClass.java
仍然在与之前相同的位置。
请告诉我您的想法。谢谢。
当与其他代码生成库结合使用时,Dagger 2 确实会产生奇怪的错误消息。
如果您深入研究这些错误,您可能会发现另一个错误 "cannot find symbol class DaggerXXXComponent"(或类似内容)。
您很可能遇到了导致 Dagger 预处理器失败的问题。然后,由于 Dagger 失败,其他代码生成将不会 运行,包括 Immutables。
您需要调试导致 Dagger 失败的错误,然后 Immutables 错误也会消失。
请考虑 <annotationÅrocessorPath>
用法。通过编辑引用我当前模块的 pom.xml 文件,以下方法对我有用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.immutables</groupId>
<artifactId>value</artifactId>
<version>${dependency.version.immutables}</version>
</path>
<path>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.16</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
重要提示:路径的排序顺序无关紧要。我正在使用 maven 版本 3.6.0.
遇到一个非常奇怪的问题;希望你们能帮上忙。
我在我的 android 项目中使用 Immutables library 已经很长时间了,没有任何问题。不可变对象的自动生成文件位于(作为示例)build/generated/source/apt/debug/com/package/name/ImmutableClass.java
,项目编译并运行良好。
我最近决定在同一个项目中使用依赖注入并开始使用 Dagger 2。我在另一个 Java 项目(非 Android)中使用过 Guice,但之前从未使用过 Dagger。突然间,我开始收到奇怪的错误,说找不到不可变对象 class。
错误:error: cannot find symbol class ImmutableClass
.
我尝试删除我创建的 @Component
和 @Module
,错误消失了。有趣的是文件 ImmutableClass.java
仍然在与之前相同的位置。
请告诉我您的想法。谢谢。
当与其他代码生成库结合使用时,Dagger 2 确实会产生奇怪的错误消息。
如果您深入研究这些错误,您可能会发现另一个错误 "cannot find symbol class DaggerXXXComponent"(或类似内容)。
您很可能遇到了导致 Dagger 预处理器失败的问题。然后,由于 Dagger 失败,其他代码生成将不会 运行,包括 Immutables。
您需要调试导致 Dagger 失败的错误,然后 Immutables 错误也会消失。
请考虑 <annotationÅrocessorPath>
用法。通过编辑引用我当前模块的 pom.xml 文件,以下方法对我有用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.immutables</groupId>
<artifactId>value</artifactId>
<version>${dependency.version.immutables}</version>
</path>
<path>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.16</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
重要提示:路径的排序顺序无关紧要。我正在使用 maven 版本 3.6.0.