【问题标题】:Eclipse compile error with generics, but ok with maven/javacEclipse 使用泛型编译错误,但使用 maven/javac 可以
【发布时间】:2016-03-21 08:45:05
【问题描述】:

我的 Eclipse IDE(基于 Eclipse Luna SR1 4.4.2 的 Spring Tool Suite 版本 3.6.4.RELEASE)给我这个 Mockito 代码的错误:

when(searcherClient.findDocumentsByCriteria(
    any(GenericCriteria.class),
    any(ParameterizedTypeReference.class)))
.thenReturn(
    DataFixture.getGenericDocumentResponse());

错误是:

方法findDocumentsByCriteria(GenericCriteria, SearcherClient 类型中的 ParameterizedTypeReference) 不是 适用于参数(GenericCriteria, ParameterizedTypeReference)

方法的签名是这样的:

public <T> T findDocumentsByCriteria(
    GenericCriteria criteria, 
    ParameterizedTypeReference<T> responseType)

令我困惑的是,当我从 eclip(使用 Oracle JDK 1.8.0_73)运行 maven 构建时,它以成功完成。其他同事使用相同的 Eclipse STS 版本,但不同的操作系统,没有编译错误。我的操作系统是 Ubuntu 15.04。

【问题讨论】:

  • 你在 Eclipse 中使用什么 JDK?
  • 我在已安装的 JRE 中默认配置了相同的 JDK)
  • @TagirValeev 这解决了问题!您应该将此作为答案发布,以便我接受。

标签: java eclipse maven mockito spring-tool-suite


【解决方案1】:

Eclipse 使用它自己的 Java 编译器(无论您如何配置它),它有时会显示与 javac 不兼容。 eclipse 编译器和 javac 编译器都有一些不断修复的错误。考虑更新到最新的 Eclipse Mars.2。

【讨论】:

    【解决方案2】:

    我也有类似的问题,maven 编译正常,但 Eclipse 本身显示某种错误,您必须在项目属性下检查 2 个地方:

    1. 构建路径

    2. java 编译器

    如果您只正确设置了其中一项 - 它将不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 2012-11-10
      • 2012-04-21
      相关资源
      最近更新 更多