显然我不能在使用静态导入的单元测试中使用用APT生成的类。 (Maven示例项目可以下载here)
如果以下示例类
import com.mysema.query.jpa.impl.JPAQuery;
public class UserStore {
public void something() {
new JPAQuery(null).from(QUser.user).list(QUser.user.login);
}
}
更改为
import static something.QUser.user;
import com.mysema.query.jpa.impl.JPAQuery;
public class UserStore {
public void something() {
new JPAQuery(null).from(user).list(user.login);
}
}
构建过程(mvn clean install)将失败:
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.466s
[INFO] Finished at: Wed May 30 16:05:40 CEST 2012
[INFO] Final Memory: 18M/150M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project apt-bug: Compilation failure: Compilation failure:
...
这是否意味着我不能在单元测试中将这些生成的类与静态导入一起使用,或者pom.xml文件中是否存在问题?
编辑:
答案 0 :(得分:3)
答案 1 :(得分:0)
我认为问题位于静态导入中,导致错误消息显示导入的QUser.user既不是类也不是接口。这看起来像用户只是Class Quser的一个属性,它可以解释错误消息。
/home/xxx/apt-bug/src/main/java/something/UserStore.java:3: cannot find symbol
symbol : class QUser
location: package something
import static something.QUser.user;
^
/home/xxx/apt-bug/src/main/java/something/UserStore.java:3: static import only from classes and interfaces
import static something.QUser.user;
^