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

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

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

не удалось разобрать сообщение об ошибке: (используйте -source 5 или выше для включения обобщений) D: \ bayer \ util \ src \ main \ java \ com \ tata \ bayer \ util \ BrokerageCalendar.java: 179: ошибка: обобщения не поддерживаются в -source 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) {
                         ^

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

Ответы [ 5 ]

42 голосов
/ 29 сентября 2011

Вы заявили, что хотите использовать 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>
26 голосов
/ 31 июля 2013

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

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

mvn help:effective-pom

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

5 голосов
/ 29 сентября 2011

Вы должны настроить плагин компилятора Maven.

<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>
3 голосов
/ 20 января 2015

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

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

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

1 голос
/ 29 мая 2014

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

<properties>
    <maven.compiler.source>1.5</maven.compiler.source>
    <maven.compiler.target>1.5</maven.compiler.target>
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...