Collection类型不是通用的; 它不能用参数

我对Eclipse Galileo有一个奇怪的问题。
我将Java 1.6设置为我的JRE。 在这行代码上

List templates = new ArrayList (); 

我在Eclipse的问题列表中看到以下错误:

Collection类型不是通用的; 它不能用参数参数化

使用Ant构建此项目没有任何问题。
我该如何解决? 看起来这是一个Eclipse问题,但由于这个错误,我无法从IDE编译/发布我的项目。

您要导入哪个List ? (参见2006年的这篇post )

java.awt.List还是java.util.List

因为,正如eclipse恰当地评论, java.awt.List没有参数化;)


检查一下

  • Java构建路径 :它不能包含对J2SE 1.4.2库的引用。
  • 源兼容性 :项目属性 – > Java编译器设置,源兼容性5.0或6.0。

除此之外,2005年最新的Eclipse 3.1 beta支持J2SE5时出现了很多问题,但从那时起就修复了。

尝试使用项目中最新的JDK6。

现在已经很晚但仍在回复,对于仍然面临这个问题的其他人可能会有所帮助。 我得到了完全相同的问题。 该列表适用于util.List。 解决方案是订购库的导出。 如果您使用Maven或任何其他库:

在项目 – >构建路径 – >配置构建路径 – >订单和导出

检查’JRE系统库’应该高于’Maven依赖关系’

这对我有用。

对于那些将从谷歌到达那里的人:问题在于cryptix库。 当我从java构建路径中删除它时,该项目是成功编译的。

你有没有列出你的class级名单? 即:

 import java.util.*; public class List { // can't do this, name this something else. public static void main(String[] args) { List l = new ArrayList(); } } 

嘿,我删除了神秘的图书馆,它没有用。 但后来我把JRE系统库放在了最顶层,它起作用了。 真奇怪。

有时它是一个日食打嗝和eclipse -clean加上令所有项目更新的帮助。

编辑

使用以下代码替换代码时是否会更改任何内容:

 java.util.List templates = new java.util.ArrayList(); 

甚至

 java.util.List templates = new java.util.ArrayList(); 

将条目“JRE System Library …”放在项目,属性,java构建路径,顺序和导出的顶部

使用“import java.util.List”

而不是默认导入“import antlr.collections.List;”

并使用JRE5或更高版本来获取集合API的通用支持….

例如:

 public class AClass { public HashMap myMap; } 

如果我写:

 public class BClass { private AClass aClass = new AClass(); public void test() { aClass.get("test"); //return Object class } } 

但如果我写:

 public class BClass { private AClass aClass = new AClass(); public void test() { aClass.get("test"); //return String class } } 

我改变了导入

  import javax.swing.text.html.HTMLDocument.Iterator; 

  import java.util.Iterator; 

然后它对我有用

一些想法:

  • 检查项目中使用的JRE库(检查包浏览器)。
  • 在eclipse设置中检查已安装的JRE(与ant使用的相同)。
  • 注释掉该行只是为了检查它是否真的是错误原因。
  • 从头开始重新输入整行。
  • 在新文件夹中安装一个新的(干净的)eclipse版本(测试)。

使java buildpath引用大于或等于java 1.5

或者您尝试添加“import java.util.List”语句,然后您可以看到

eclipse说它与其他一些List类型相冲突

例如,它可能与com.lowagie.xx.xxx.List等冲突,试图避免这些导入

声明

尝试删除import antlr.collections.List; 并单击Ctr + space以使用java.util