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

Maven: ошибка: generics не поддерживаются в -source 1.3, я использую 1.6

Я импортировал существующий проект Maven в Eclipse IDE. Я изменил код в нем, он скомпилирован успешно, Я использую Java 1.6 как компилятор и когда я пытаюсь запустить maven clean install -X

Он дает следующую ошибку

не удалось выполнить синтаксический анализ сообщения об ошибке: (используйте опции-источник 5 или более поздней версии, чтобы включить генерики) D:\bayer\util\src\main\java\com\tata\bayer\util\BrokerageCalendar.java: 179: ошибка: generics не поддерживаются в источнике 1.3

   private static Hashtable<String, Boolean> nyseHolidays = new Hashtable<String, Boolean>();
                           ^

could not parse error message:   (use -source 5 or higher to enable generics)
D:\bayer\util\src\main\java\com\tata\bayer\util\APIHttpXmlClient.java:27: error: generics are not supported in -source 1.3
                        Class<? extends APIResponse> responseClass) {
                         ^

Пожалуйста, предложите любые идеи, как решить эту проблему.

4b9b3361

Ответ 1

Вы заявили, что хотите использовать java 1.6 в своем проекте pom.xml?:

<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <compilerArgument></compilerArgument>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

Ответ 2

Настройка плагина Maven Compiler устранит проблему. Оказывается, проблема была вызвана пакетом Maven3 в репозитории Ubuntu. Альтернативное исправление - загрузить Maven 3 с веб-сайта Apache, который использует более современный плагин компилятора.

Я хотел знать, почему это происходит, когда в документации указано, что исходный Java-источник равен 1.5. Чтобы узнать, что mvn использует для вашего плагина компилятора, используйте:

mvn help:effective-pom

My Maven Compiler Plugin был 2.0.2, хотя я использовал Maven 3.0.4 из пакетов Ubuntu. Когда я запускаю ту же команду, используя Maven 3.0.4 от Apache, у меня есть версия 2.3.2 плагина, которая по умолчанию соответствует Java 1.5, как ожидалось.

Ответ 3

Вам нужно настроить Maven Compiler Plugin.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

Ответ 4

Другой способ, который не требует модификации pom, - указать источник и цель в командной строке:

mvn clean install -Dmaven.compiler.source=1.6 -Dmaven.compiler.target=1.6

Обратите внимание, что этого следует избегать в целом, так как невозможно гарантировать, что сборка будет повторяться таким образом.

Ответ 5

Я бы предпочел это:

<properties>
    <maven.compiler.source>1.5</maven.compiler.source>
    <maven.compiler.target>1.5</maven.compiler.target>
    ...