Подтвердить что ты не робот

Тип Collection не является общим; его нельзя параметризовать аргументами <? расширяет E>

У меня странная проблема с Eclipse Galileo.
Я установил Java 1.6 как свою JRE. На этой строке кода

List templates = new ArrayList ();

Я вижу следующую ошибку в списке задач Eclipse:

Тип Collection не является общим; его нельзя параметризовать с помощью аргументов

У меня нет проблем с построением этого проекта с помощью Ant.
Как я могу это исправить? Похоже, что это проблема Eclipse, но из-за этой ошибки я не могу скомпилировать/опубликовать свой проект из среды IDE.

4b9b3361

Ответ 1

Для тех, кто доберется от Google: проблема была в библиотеке cryptix. Когда я удалял его из пути сборки java, проект скомпилирован.

Ответ 2

Что List вы импортируете? (см. этот поток с 2006 года)

java.awt.List или java.util.List?

Поскольку, как точно комментирует eclipse, java.awt.List не параметрируется;)


Также проверьте

  • Java Build path: он не должен содержать ссылку на библиотеки J2SE 1.4.2.
  • Source Compatibility: свойства проекта → Параметры компилятора Java, совместимость с исходным кодом 5.0 или 6.0.

Кроме того, в 2005 году было много проблем когда последняя бета Eclipse 3.1 поддерживала J2SE5, но с тех пор это было исправлено.

Попробуйте использовать последний JDK6 в своем проекте.

Ответ 3

Поздно, но все же отвечая, может быть полезно для других, которые все еще сталкиваются с этой проблемой. Я получал точно такую ​​же проблему. Список был правильным с util.List. Решение заключалось в том, чтобы заказать экспорт библиотек. Если вы используете Maven или любые другие библиотеки:

В проекте → Путь сборки → Настройка пути сборки → Заказ и экспорт

Проверить 'Библиотеки систем JRE' должны быть выше 'Maven Dependencies'

Это сработало для меня.

Ответ 4

Вы назвали свой список классов? то есть:

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

    }

}

Ответ 5

Эй, я удалил загадочную библиотеку, и она не сработала. Но затем я поставил JRE System Library наверху, и это сработало. Очень странно.

Ответ 6

Иногда это помогает eclipse hiccup и eclipse -clean плюс обновление всех проектов.

Edit

Изменяет ли что-либо, когда вы заменяете свой код:

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

или даже

java.util.List<Object> templates = new java.util.ArrayList<Object>();

?

Ответ 7

поместите запись "JRE System Library..." вверху в проекте, свойствах, пути сборки java, порядке и экспорта

Ответ 8

использовать "import java.util.List"

вместо импорта по умолчанию "import antlr.collections.List;"

и использовать JRE5 или выше для общей поддержки API сбора данных.

Ответ 9

например:

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

}

}

Ответ 10

Я изменил импорт

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

к

   import java.util.Iterator;

тогда это сработало для меня

Ответ 11

Некоторые идеи:

  • проверьте библиотеку JRE, используемую в вашем проекте (проверьте проводник пакетов).
  • проверьте установленные JRE в настройках затмения (то же, что используется ant).
  • закомментируйте строку, чтобы проверить, действительно ли это причина ошибки.
  • перепечатать всю строку с нуля.
  • установите новую (чистую) версию eclipse в новую папку (тестирование).

Ответ 12

сделать ссылку на путь построения java больше или равно java 1.5

или вы пытаетесь добавить инструкцию import java.util.List, тогда вы можете увидеть, что

eclipse говорит, что он противоречит другому типу List

например, он может противоречить com.lowagie.xx.xxx.List и т.д., старайтесь избежать этих импортных

утверждения

Ответ 13

Попробуйте удалить import antlr.collections.List; и нажмите Ctr + space, чтобы использовать java.util