2012-05-30 67 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