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
?
将条目“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