Классы, сгенерированные QueryDSL/APT и статическим импортом

По-видимому, я не могу использовать классы, созданные с помощью APT, в модульных тестах, использующих статический импорт. (Пример проекта Maven можно скачать здесь)

Если следующий пример класса

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

(полное сообщение об ошибке)

Означает ли это, что я не могу использовать эти сгенерированные классы со статическим импортом в модульных тестах или проблема в файлах pom.xml?

РЕДАКТИРОВАТЬ:

Файл POM: http://pastebin.com/gvycZmXD


person problemzebra    schedule 30.05.2012    source источник
comment
Можете ли вы связать фактическое сообщение об ошибке? Вы отрезали его прямо перед тем, как он сказал, почему это не удалось ....   -  person matt5784    schedule 30.05.2012
comment
добавлено полное сообщение об ошибке   -  person problemzebra    schedule 30.05.2012
comment
Я полагаю, что это проблема с pom, особенно с зависимостями. Однако трудно сказать, не видя самого помпона. Не могли бы вы опубликовать pom (или даже только раздел зависимостей)? (конечно, с запутанными именами классов)   -  person matt5784    schedule 30.05.2012
comment
Файл pom включен в файл tar примера проекта Maven.   -  person problemzebra    schedule 30.05.2012


Ответы (2)


Это может быть связано с https://github.com/mysema/querydsl/issues/158.

У меня еще не было времени исследовать это.

Изменить

Это, по-видимому, было исправлено в Java 7.

person Timo Westkämper    schedule 31.05.2012
comment
Я думаю, что это та же проблема. Это появляется как с Java 6, так и с Java 7. - person problemzebra; 31.05.2012
comment
У вас есть такая же проблема со статическим импортом подстановочных знаков? - person Timo Westkämper; 01.06.2012
comment
Да, у меня та же проблема при использовании подстановочных знаков в операторах статического импорта. - person problemzebra; 01.06.2012
comment
В eclipse это иногда связано с очисткой и ошибкой компиляции в другой части проекта. Поэтому просто скопируйте его часть в меньший проект, и если он работает, запустите maven и проверьте наличие других проблем с maven. - person SkorpEN; 26.11.2015

Я предполагаю, что проблема связана со статическим импортом, потому что в сообщениях об ошибках говорится, что импортированный QUser.user не является ни классом, ни интерфейсом. Похоже, что пользователь — это просто атрибут класса 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;
^
person khmarbaise    schedule 30.05.2012