Тип Collection не является универсальным; это не может быть параметризовано с аргументами <? расширяет E>
У меня странная проблема с Eclipse Galileo.
Я установил Java 1.6 в качестве JRE. На этой строке кода
List templates = new ArrayList ();
Я вижу следующую ошибку в списке проблем Eclipse:
Тип Collection не является универсальным; не может быть параметризовано аргументами
У меня нет проблем с созданием этого проекта с помощью Ant.
Как я могу это исправить? Похоже, это проблема Eclipse, но из-за этой ошибки я не могу скомпилировать / опубликовать свой проект из IDE.
13 ответов
Для тех, кто попадет туда из Google: проблема была с библиотекой cryptix. Когда я удалил его из пути сборки Java, проект успешно скомпилирован.
Какие List
вы импортируете? (см. эту ветку с 2006 года)
java.awt.List
или же java.util.List
?
Потому что, как удачно комментирует затмение, java.awt.List
не параметризован;)
Проверьте также
- Путь сборки Java: он не должен содержать ссылку на библиотеки J2SE 1.4.2.
- Совместимость с исходным кодом: свойства проекта -> Настройки компилятора Java, Совместимость с исходным кодом 5.0 или 6.0.
Помимо этого, было много проблем еще в 2005 году, когда последняя бета-версия Eclipse 3.1 поддерживала J2SE5, но с тех пор это было исправлено.
Попробуйте использовать последнюю версию JDK6 в своем проекте.
Уже поздно, но все еще отвечаю, может быть полезно для тех, кто все еще сталкивается с проблемой. Я получал точно такую же проблему. Список был корректным с помощью util.List. Решение состояло в том, чтобы заказать экспорт библиотек. Если вы используете Maven или любые другие библиотеки:
В проекте -> Путь сборки -> Настройка пути сборки -> Порядок и экспорт
Проверьте, что 'Системные библиотеки JRE' должны быть выше 'Maven Dependencies'
Это сработало для меня.
Вы назвали свой список классов? то есть:
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>();
}
}
Эй, я удалил загадочную библиотеку, и она не сработала. Но затем я поместил Системную библиотеку JRE на вершину, и это сработало. Очень странно.
Поместите запись "JRE System Library..." вверху в проекте, свойствах, пути сборки java, порядке и экспорте
Я изменил импорт
import javax.swing.text.html.HTMLDocument.Iterator;
в
import java.util.Iterator;
тогда у меня это сработало
Используйте "import java.util.List"
вместо импорта по умолчанию импорт "import antlr.collections.List;"
и использовать JRE5 или выше для общей поддержки API коллекции....
Иногда это сбой затмения и eclipse -clean
плюс обновление всех проектов помогает.
редактировать
Изменяет ли это что-нибудь, когда вы заменяете свой код на:
java.util.List templates = new java.util.ArrayList();
или даже
java.util.List<Object> templates = new java.util.ArrayList<Object>();
?
Например:
public class AClass<T extends Object>
{
public HashMap<String, String> 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 antlr.collections.List;
и нажмите Ctr+пробел, чтобы использовать java.util
Сделать ссылку на Java buildpath более или равной Java 1,5
или вы пытаетесь добавить оператор import java.util.List, тогда вы можете увидеть, что
Eclipse говорит, что он конфликтует с другим типом списка
например, это может конфликтовать с com.lowagie.xx.xxx.List и т. д., попробуйте избежать импорта
заявления
Некоторые идеи:
- проверьте библиотеку JRE, используемую в вашем проекте (проверьте проводник пакетов).
- проверьте установленные JRE в настройках eclipse (так же, как используется ant).
- закомментируйте строку, чтобы проверить, действительно ли это является причиной ошибки.
- перепечатайте всю строку с нуля.
- установить новую (чистую) версию Eclipse в новую папку (тестирование).