it-roy-ru.com

Ошибка компиляции Maven

Когда я собираю и запускаю свою программу в Netbeans, она работает без проблем. Но с тем же файлом pom.xml при попытке "mvn compile" я получаю эту ошибку:

[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project hadoop-test: Compilation failure
[ERROR] /home/metin/NetBeansProjects/hadoop-test/src/main/Java/com/citusdata/hadoop/HadoopTest.Java:[53,8] error: generics are not supported in -source 1.3

Моя версия Java не 1.3, здесь результат "mvn -version"

Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_03, vendor: Oracle Corporation
Java home: /usr/lib/jvm/Java-7-openjdk-AMD64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-27-generic", Arch: "AMD64", family: "unix"

и это строка 53:

Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken();
12
metdos

Проблема в том, что maven-compiler-plugin в Maven2 по умолчанию использует -source 1.3 и target 1.3

Вы можете исправить это, добавив это в ваш pom:

    <plugin>
      <groupId>org.Apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <compilerVersion>1.5</compilerVersion>
        <source>1.5</source>
        <target>1.5</target>
      </configuration>
    </plugin>

Это целесообразно поместить в раздел pluginManagement вашего верхнего родительского pom, чтобы ваши производные poms не заботились об этом.

21
Petr Kozelka

Вы должны добавить некоторую информацию в ваш pom.xml. Что-то вроде того: 

   <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
             <source>1.6</source>
             <target>1.6</target>
        </configuration>
  </plugin>
5
Agemen

В вашем журнале я вижу эту строку:

generics are not supported in -source 1.3

Проверьте исходную и целевую конфигурацию подключаемого модуля maven-compiler и обновите его до 1.5.

1
Thinhbk

Кажется, ваша версия плагина компилятора maven - 1.3.

Просмотрите эту ссылку, чтобы заставить компилятор работать с JDK 1.7, http://maven.Apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html

0
Arham

Выполните Maven Run из Eclipse, а затем запустите mvn test из командной строки. В моем случае все проблемы решаются с помощью этого шага. 

0
MukeshPandey

Кажется, ваш Maven Java домашняя точка указывает на JRE не JDK

Java home: /usr/lib/jvm/Java-7-openjdk-AMD64/jre

Вы должны изменить его на JDK.

Попробуйте Java -version и посмотрите, что там

используйте /usr/sbin/alternatives --config Java, чтобы изменить версию Java.

0
Suranga

Вот немного другой способ исправить ту же ошибку в Eclipse Indigo.

  • Откройте свой (Maven) проект в Eclipse.
  • щелкните правой кнопкой мыши на pom.xml
  • выберите ... Maven ... Добавить плагин
  • Войти:

      - groupId: org.Apache.maven.plugins
      - artifactId: maven-compiler-plugin
      - version: 2.3.2
    

Это вставит новый раздел в ваш pom.xml и откроет окно для редактирования.

Затем вы можете добавить исходный и целевой элементы XML, как описано выше, чтобы выбрать правильную JRE.

Раздел выглядит так в моем проекте:

<build>
  <plugins>
     <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
           <source>1.6</source>
           <target>1.6</target>
        </configuration>
     </plugin>
  </plugins>
</build>

Обратите внимание на дополнительные теги для "build" и "plugins", отсутствующие в некоторых других постах.

Как только вы сохраните файл, Eclipse уведомит вас, что ваш pom не синхронизирован с вашим проектом. 

Затем вы можете щелкнуть правой кнопкой мыши по проекту ... выбрать Maven..update project

Ключевым моментом для меня было то, что Maven автоматически перенастроит путь сборки в Eclipse. Что вы можете проверить с помощью проекта ... путь сборки .. настроить путь сборки ... библиотеки.

Таким образом, по сути это означает, что вам не нужно возиться с прямой настройкой пути сборки в Eclipse, если вы используете проект Maven.

НТН

0
windsor