Ответ 1
mvn -version
выведет, какую java он использует. Если JAVA_HOME установлен в действительный каталог JDK, а Maven использует что-то еще, то, скорее всего, кто-то вмешался в то, как Maven запускает.
При запуске нашей сборки Maven член моей команды получает эту ошибку при выполнении. Однако, когда мы запускаем java -version
из ее командной строки, это указывает на Java 1.6.0_26. Очевидно, что ошибка, похоже, кричит, что Maven использует Java 5.
Как мне определить и изменить, какая версия Java используется Maven?
3 потенциально важных замечания:
mvn -version
выведет, какую java он использует. Если JAVA_HOME установлен в действительный каталог JDK, а Maven использует что-то еще, то, скорее всего, кто-то вмешался в то, как Maven запускает.
Вам нужно будет настроить maven-compiler-plugin
для использования параметров 1.6 source
и target
(по умолчанию это 1.5).
Это лучше всего сделать в родительском pom вашего проекта в разделе <pluginManagment>
(но вы всегда можете настроить его на отдельные проекты, конечно).
<build>
<pluginManagement>
<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>
</pluginManagement>
</build>
Посмотрите здесь: http://www.MacAdie.net/2011/07/10/adding-some-xml-to-netbeans-pom-files/
mvn -version
сообщает вам, какой компилятор Maven использует, поэтому это отвечает на вопрос, если ваш POM не указывает значения переопределения для используемых версий.
Здесь самый простой способ указать переопределения в pom.xml
:
<properties>
<maven.compiler.target>1.9</maven.compiler.target>
<maven.compiler.source>1.9</maven.compiler.source>
</properties>
В качестве альтернативы maven-compiler-plugin
можно указать более явно. В этом случае просмотрите значения <source>
и <target>
, связанные с плагином.
Оба этих параметра описаны здесь.
Если ваш POM имеет <parent>
, вам также нужно проверить это (рекурсивно).
Примечание. Если указаны source
и target
, эти значения передаются в качестве параметров командной строки для компилятора. Используя эту функцию, вы можете компилировать или запускать предыдущие версии Java, чем номинальное значение компилятора.