Мэйвен Ошибка Компиляции

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

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

6 ответов


проблема в том, что 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 не должны заботиться об этом.


вы должны добавить некоторую информацию в свой pom.XML. Что-то вроде этого:--2-->

   <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>

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

generics are not supported in -source 1.3

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


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

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


кажется, что ваш Maven java home указывает на jre, а не jdk

Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre

вы должны изменить его на пакет.

попробовать java -version и посмотреть, что там

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


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

  • откройте проект (maven) в Eclipse.
  • щелкните правой кнопкой мыши на pom.в XML
  • выбрать ...Знаток...Добавить Плагин
  • Enter:

      - 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>

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

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

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

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

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

HTH