我已经设置了一个项目,Dagger已添加到classpath,包含所有M2E连接器等。在我的pom.xml中我有
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<dependencies>
<dependency>
<groupId>com.squareup.dagger</groupId>
<artifactId>dagger</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.squareup.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>1.2.1</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.jakewharton</groupId>
<artifactId>butterknife</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
</plugin>
所有内容也都添加到Eclipse项目设置中,所以当我在Dagger模块中更改某些内容时,它会自动反映在生成的Java文件中
target/generated-sources/annotations
此文件夹也作为源文件夹附加到项目中。
到目前为止一切顺利,当我在模拟器上通过ADT运行应用程序时,我看到一个例外
06-21 09:51:17.983: E/AndroidRuntime(1207):
java.lang.RuntimeException: Unable to create application XXX:
java.lang.IllegalStateException: Module adapter for class XXX could not be loaded.
Please ensure that code generation was run for this module.
据我了解,这意味着文件夹&#34; target / generated-sources / annotations&#34; ADT在尝试编译项目时不可见。
目前我有两个想法:
不幸的是,我还没有找到如何做其中任何一个。 Dagger文档在这个主题上也有点过于简洁和模糊。
那么当你使用Maven和Dagger时,它通常如何在Eclipse中运行?
更新:我已经完成了&#34;可能重复的所有步骤&#34;上面的问题,但我的问题没有解决。我将再次声明:在构建期间创建文件,由于某种原因它们对模拟器不可见。
答案 0 :(得分:3)
如果有人遇到同样的问题,我就是这样解决的。我在pom.xml中添加了下一行:
<build>
<outputDirectory>bin/classes</outputDirectory>
...
这意味着在构建期间所有常用的东西都像往常一样继续进入“目标”文件夹,但是所有源文件夹中的所有类都转到“bin / classes”。必须必须才能使ADT正常工作。我不知道,如果ADT可以与任何其他文件夹一起使用,但默认情况下它不能。现在您可以右键单击项目并选择“Maven / Update Project ...”将所有输出文件夹设置为“bin / classes”。这解决了这个问题,ADT在具有所有必需类的模拟器上正确运行应用程序。