2012-05-30 29 views
1

显然,我不能在使用静态导入的单元测试中使用通过APT生成的类。 (Maven的示例项目可以下载hereQueryDSL/APT和静态导入生成的类

如果下面的示例类

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全新安装)将失败:

[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: 
... 

full error message

这是否意味着我不能在单元测试中将这些生成的类与静态导入一起使用,还是在pom.xml文件中存在问题?

编辑:

POM文件:http://pastebin.com/gvycZmXD

+0

可以链接实际的错误信息?你之前说它为什么失败...... – matt5784

+0

添加完整的错误信息 – problemzebra

+0

我_believe_它是一个问题,特别是依赖关系。但是,没有看到POM本身就很难说。你可能会发布的POM(甚至只是依赖部分)? (当然您的类名称会被混淆) – matt5784

回答

0

我认为问题位于静态导入,导致该错误消息说,进口QUser.user是不是类或接口。这看起来像用户只是类QUES的一个属性,它可以解释错误信息。

/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; 
^ 
3
+0

我认为这是同样的问题。这对于Java 6和Java 7都会显示。 – problemzebra

+0

您是否有与静态通配符导入相同的问题? –

+0

是的,我在静态导入语句中使用通配符时遇到同样的问题。 – problemzebra