J'ai un problème étrange avec Eclipse Galileo.
J'ai défini Java 1.6 comme JRE. Sur cette ligne de code
List templates = new ArrayList ();
Je vois l'erreur suivante dans la liste des problèmes d'Eclipse:
Le type Collection n'est pas générique; il ne peut pas être paramétré avec des arguments
Je n'ai aucun problème avec la construction de ce projet avec Ant.
Comment puis-je résoudre ce problème? On dirait que c'est un problème Eclipse, mais à cause de cette erreur, je ne peux pas compiler/publier mon projet à partir de l'EDI.
Pour ceux qui vont y arriver depuis Google: le problème était avec la bibliothèque cryptix. Lorsque je l'ai supprimé du chemin de génération Java, le projet est compilé avec succès.
Quelle List
importez-vous? (voir ce fil de 2006 )
Java.awt.List
ou Java.util.List
?
Parce que, comme le dit judicieusement Eclipse, Java.awt.List
n'est pas paramétré;)
Vérifiez aussi le
Autre que cela, il y avait beaucoup de problèmes en 2005 lorsque la dernière version bêta d'Eclipse 3.1 supportait J2SE5, mais cela a été corrigé depuis.
Essayez d’utiliser la dernière version du JDK6 dans votre projet.
Il est tard, mais toujours répondre, pourrait être utile pour les autres qui sont toujours confrontés au problème. J'avais exactement le même problème. La liste était correcte avec util.List. La solution consistait à commander les exportations des bibliothèques. Si vous utilisez Maven ou d’autres bibliothèques:
Dans Projet -> Chemin de construction -> Configurer le chemin de construction -> Ordre et exportations
Vérifiez que 'Bibliothèques système JRE' doit être supérieur à 'Dépendances Maven'
Cela a fonctionné pour moi.
Avez-vous nommé votre liste de classe? c'est à dire:
import Java.util.*;
public class List { // can't do this, name this something else.
public static void main(String[] args) {
List<Integer> l = new ArrayList<Integer>();
}
}
Hé, j'ai enlevé la bibliothèque cryptique et cela n'a pas fonctionné. Mais ensuite, j'ai placé la bibliothèque système JRE en haut, et cela a fonctionné. Vraiment bizarre.
placez l'entrée "Bibliothèque système JRE ..." en haut dans le projet, les propriétés, le chemin de génération Java, la commande et l'exportation
J'ai changé l'importation
import javax.swing.text.html.HTMLDocument.Iterator;
à
import Java.util.Iterator;
alors cela a fonctionné pour moi
par exemple:
public class AClass<T extends Object>
{
public HashMap<String, String> myMap;
}
si j'écris:
public class BClass
{
private AClass aClass = new AClass();
public void test()
{
aClass.get("test");
//return Object class
}
}
mais si j'écris:
public class BClass
{
private AClass<?,?> aClass = new AClass<?,?>();
public void test()
{
aClass.get("test");
//return String class
}
}
Parfois, il s'agit d'un hoquet Eclipse et Eclipse -clean
plus d'actualiser tous les projets aide.
Modifier
Cela change-t-il quelque chose lorsque vous remplacez votre code par:
Java.util.List templates = new Java.util.ArrayList();
ou même
Java.util.List<Object> templates = new Java.util.ArrayList<Object>();
?
utilisez "import Java.util.List"
au lieu de l'importation par défaut "import antlr.collections.List;"
et utilisez JRE5 ou une version ultérieure pour la prise en charge générique de l'API de collection ....
rendre la référence de construction Java supérieure ou égale à Java 1.5
ou si vous essayez d'ajouter l'instruction "import Java.util.List", vous pouvez voir que
Eclipse dit qu'il est en conflit avec un autre type de liste
par exemple, il peut être en conflit avec com.lowagie.xx.xxx.List etc. essayez d'éviter ces importations
des déclarations
Essayez de supprimer import antlr.collections.List;
et cliquez sur Ctr+space utiliser Java.util
Quelques idées: