Ошибка компиляции 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();
Ответы
Ответ 1
Проблема заключается в том, что 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
в вашем самом верхнем родительском помпе, чтобы ваши производные поры не нуждались в этом.
Ответ 2
Вы должны добавить информацию в свой 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>
Ответ 3
В вашем журнале я вижу эту строку:
generics are not supported in -source 1.3
Проверьте исходную и целевую конфигурацию подключаемого модуля maven-compiler и обновите его до 1.5.
Ответ 4
Кажется, ваша версия плагина для компилятора maven равна 1.3.
Посмотрите на эту ссылку, чтобы заставить компилятор работать с JDK 1.7, http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html
Ответ 5
Кажется, ваш maven java home указывает на jre not jdk
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Вы должны изменить его на jdk.
Попробуйте java -version
и посмотрите, что там
используйте /usr/sbin/alternatives --config java
, чтобы изменить версию java.
Ответ 6
Вот несколько другой способ исправить ту же ошибку в Eclipse Indigo.
Это добавит новый раздел в ваш 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..update
Ключевым понятием для меня было то, что Maven автоматически переустановит путь сборки в Eclipse. Что вы можете проверить по проекту... build path..configure построить путь... Библиотеки.
Таким образом, по сути, это означает, что вам не нужно будет связываться с прямой настройкой пути сборки в Eclipse, если вы используете проект Maven.
НТН