web-dev-qa-db-fra.com

Le type Collection n'est pas générique; il ne peut pas être paramétré avec des arguments <? étend E>

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.

20
dbf

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.

6
dbf

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.

38
VonC

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. 

21
Swagatika

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>();

    }

}
3
Preston Cummings

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. 

2
Camilo Cuesta

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

1
Fabio

J'ai changé l'importation

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

à

   import Java.util.Iterator;

alors cela a fonctionné pour moi

1
upog

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

}

}
1
zen0n

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>();

?

1
Andreas_D

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 ....

1
xxxx

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

0
Sankar R.K

Essayez de supprimer import antlr.collections.List; et cliquez sur Ctr+space utiliser Java.util

0
Kadiri

Quelques idées: 

  • vérifiez la bibliothèque JRE utilisée dans votre projet (vérifiez l'explorateur de packages). 
  • vérifiez les JRE installés dans les paramètres Eclipse (identiques à ceux utilisés par ant). 
  • commentez la ligne juste pour vérifier si c'est vraiment la cause de l'erreur. 
  • retaper toute la ligne à partir de zéro.
  • installez une nouvelle version (propre) d’Eclipse dans un nouveau dossier (test).
0
Carlos Heuberger