使用泛型的 Eclipse 编译错误,但可以使用 maven/javac

Eclipse compile error with generics, but ok with maven/javac

我的 Eclipse IDE(Spring 工具套件版本 3.6。4.RELEASE 基于 Eclipse Luna SR1 4.4.2)给我这个 Mockito 代码的错误:

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

错误是:

The method findDocumentsByCriteria(GenericCriteria, ParameterizedTypeReference) in the type SearcherClient is not applicable for the arguments (GenericCriteria, ParameterizedTypeReference)

方法的签名是这样的:

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

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

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

  1. 构建路径

  2. java编译器

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

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