8

java: Duplicate methods named spliterator with the parameters () and () are inherited from the types java.util.List<T> and java.lang.Iterable<T>如果在带有 JDK 8 的 IDEA 中使用 Eclipse 编译器,使用以下简单类会出错:

public class Java8Test {
    public static interface Traverable<T> extends Iterable<T> {}
    public static interface List<T> extends Traverable<T>, java.util.List<T> {}
}

如果将编译器更改为 javac,则没有错误。如果使用 Eclipse 编译器切换到 JDK 6,该错误也会消失。

IDEA版本:12.1.5

4

2 回答 2

5

尝试使用 Java 8 JDK 编译 Java 7 代码时遇到了同样的错误。

对我有用的解决方案是将 Eclipse 中配置的 JRE 更改为 Java 7 Window -> Preferences -> Java -> Installed JREs:. 编辑现有的并选择一个包含 Java 7 JDK 的目录。

于 2015-01-22T08:49:53.210 回答
0

我遇到过同样的问题。Eclipse 的 4.3 JTD 似乎不能很好地与 Java8 一起使用。用 Stephan Herrmann (CLA) 的话来说:

Java 7 编译器永远不应该尝试针对 JRE 8 进行编译。该场景的真正兼容性没有在任何地方指定,甚至可能无法实现,因为已添加到库中的默认方法以确保旧代码的运行时兼容性的方式但 兼容 Java 7 编译器和新库。因此,我将此错误标记为无效,这是我们无法通过设计支持的。

您可以在这里阅读更多内容:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=407010

和这里:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=409473

https://bugs.eclipse.org/bugs/show_bug.cgi?id=390889

于 2014-09-26T08:27:24.200 回答