通过以下简单的类,如果在带有 JDK 8 的 IDEA 中使用 Eclipse 编译器,我会收到
java: Duplicate methods named spliterator with the parameters () and () are inherited from the types java.util.List<T> and java.lang.Iterable<T>
错误:
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
尝试使用 Java 8 JDK 编译 Java 7 代码时,我遇到了同样的错误。
对我有用的解决方案是将 Eclipse 中配置的 JRE 更改为 Java 7:
Window -> Preferences -> Java -> Installed JREs
。编辑现有目录并选择包含 Java 7 JDK 的目录。
我也有同样的问题。看来 Eclipse 的 4.3 JTD 与 Java8 的配合不太好。 Stephan Herrmann (CLA) 的话:
Java 7 编译器不应该尝试针对 JRE 8 进行编译。正确 该方案的兼容性未在任何地方指定,并且可能不会 甚至可能因为添加了默认方法 以确保旧代码的运行时兼容性的方式构建库 但 not 与 Java 7 编译器和新库的编译时兼容性。因此我将这个错误标记为无效,它是s.t.我们不能 设计支持。
您可以在这里阅读更多内容:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=407010
这里: