Ответ 1
Для тех, кто доберется от Google: проблема была в библиотеке cryptix. Когда я удалял его из пути сборки java, проект скомпилирован.
У меня странная проблема с Eclipse Galileo.
Я установил Java 1.6 как свою JRE. На этой строке кода
List templates = new ArrayList ();
Я вижу следующую ошибку в списке задач Eclipse:
Тип Collection не является общим; его нельзя параметризовать с помощью аргументов
У меня нет проблем с построением этого проекта с помощью Ant.
Как я могу это исправить? Похоже, что это проблема Eclipse, но из-за этой ошибки я не могу скомпилировать/опубликовать свой проект из среды IDE.
Для тех, кто доберется от Google: проблема была в библиотеке cryptix. Когда я удалял его из пути сборки java, проект скомпилирован.
Что List
вы импортируете? (см. этот поток с 2006 года)
java.awt.List
или java.util.List
?
Поскольку, как точно комментирует eclipse, java.awt.List
не параметрируется;)
Также проверьте
Кроме того, в 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 System Library наверху, и это сработало. Очень странно.
Иногда это помогает eclipse hiccup и eclipse -clean
плюс обновление всех проектов.
Edit
Изменяет ли что-либо, когда вы заменяете свой код:
java.util.List templates = new java.util.ArrayList();
или даже
java.util.List<Object> templates = new java.util.ArrayList<Object>();
?
поместите запись "JRE System Library..." вверху в проекте, свойствах, пути сборки java, порядке и экспорта
использовать "import java.util.List"
вместо импорта по умолчанию "import antlr.collections.List;"
и использовать JRE5 или выше для общей поддержки API сбора данных.
например:
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 javax.swing.text.html.HTMLDocument.Iterator;
к
import java.util.Iterator;
тогда это сработало для меня
Некоторые идеи:
сделать ссылку на путь построения java больше или равно java 1.5
или вы пытаетесь добавить инструкцию import java.util.List, тогда вы можете увидеть, что
eclipse говорит, что он противоречит другому типу List
например, он может противоречить com.lowagie.xx.xxx.List и т.д., старайтесь избежать этих импортных
утверждения
Попробуйте удалить import antlr.collections.List;
и нажмите Ctr + space, чтобы использовать java.util