【问题标题】:Classes generated by QueryDSL/APT and static importsQueryDSL/APT 和静态导入生成的类
【发布时间】:2012-05-30 14:15:14
【问题描述】:

显然我不能在使用静态导入的单元测试中使用由 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:
...

(full error message)

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

编辑:

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

【问题讨论】:

  • 你能链接实际的错误信息吗?你在它说出失败的原因之前就把它切断了......
  • 添加了完整的错误信息
  • 相信这是 pom 的问题,特别是依赖项。但是,如果没有看到 pom 本身就很难说。您能否发布 pom(甚至只是依赖项部分)? (当然你的类名被混淆了)
  • pom 文件包含在 Maven 示例项目的 tar 文件中。

标签: java maven apt querydsl


【解决方案1】:

这可能与https://github.com/mysema/querydsl/issues/158有关

我还没有时间对此进行调查。

编辑

这显然已在 Java 7 中得到修复

【讨论】:

  • 我认为这是同一个问题。这出现在 Java 6 和 Java 7 中。
  • 静态通配符导入有同样的问题吗?
  • 是的,我在静态导入语句中使用通配符时遇到了同样的问题。
  • 在 Eclipse 中,有时与项目其他部分的清理和编译错误有关。因此,只需将其中的一部分复制到较小的项目中,如果可以运行 maven 并检查其他 maven 问题。
【解决方案2】:

我假设问题出在静态导入中,因为错误消息说导入的 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;
^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2014-05-30
    • 2021-09-29
    • 2019-09-16
    • 2012-12-06
    • 2020-09-30
    • 2021-07-31
    相关资源
    最近更新 更多