Maven 编译时出现“ Source option 5 is no more support. Use 6 or later”错误

我在 $ mvn compile上得到以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Sym360: Compilation failure: Compilation failure:
[ERROR] Source option 5 is no longer supported. Use 6 or later.
[ERROR] Target option 1.5 is no longer supported. Use 1.6 or later.
[ERROR] -> [Help 1]

这是我的 pom.xml代码:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.app</groupId>
<artifactId>Tset</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Test</name>
<url>http://maven.apache.org</url>


<properties>
<maven.compiler.source>6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>


<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>


<!-https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-
java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>


<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>

我尝试在 pom.xml代码中添加属性,但仍然得到相同的错误。

241522 次浏览

这对我有帮助:

  1. 右键单击项目。
  2. 点击构建路径。
  3. 单击“配置生成路径”。
  4. 它打开一个 JavaBuild 路径窗口。
  5. 单击左侧的 Java 编译器。
  6. 它导航到 Java 编译器窗口,因为根据 jre 版本设置编译器遵从级别(如果 Java 版本是1.8,例如) 然后选择1.8)作为选择。
  7. 点击[应用]按钮。
  8. 点击[确定]按钮。
  9. 右键单击 Project > Maven > Update the Project。
  10. 右键单击 Project > Run As > Maven install —— pom.xml 文件正在运行,java jar 被下载并安装到 Project 中。
  11. 右键单击 Project > Run As > Maven Test —— pom.xml 文件正在运行,java jar 被下载并安装到 Project 中。

然后您得到了 BuildSuccess 消息,并且成功地创建了 maven 项目。

对于新的 Apache net Bean,它与 SUPARNA SOMAN 的建议有点不同

  • 右击您的项目 - 在“ set configuration”上悬停,然后点击“ customize configuration” 。一个新的对话框打开... 。
  • 在类别所在的左角,点击“ Source
  • 在下面页面上的 select 表单中,选择您所需的 JDK 版本——请参见最后一步骤的图像

我认为您错误地使用了 pom.xml:

<properties>
<maven.compiler.source>6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>

改为:

<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>

现在取决于您是否使用命令行使用:

清除编译

或者任何一种方式(日食)

右键单击 project Run with maven > build > Target (coding)

在 MacOS 上我有多个版本

user> ls /Library/Java/JavaVirtualMachines/
jdk-11.0.4.jdk      jdk-12.0.2.jdk      jdk1.8.0_221.jdk

而且 JAVA _ HOME 的定义不正确,所以 Maven 使用了 jdk-12。

user> mvn -version
Apache Maven 3.6.1
Maven home: /usr/local/Cellar/maven/3.6.1/libexec
Java version: 12.0.2, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
Default locale: XXX, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"

所以:

定义 JAVA_HOME以使用 jdk-8。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home

再试一次,现在专家是:

user> mvn -version
Maven home: /usr/local/Cellar/maven/3.6.1/libexec
Java version: 1.8.0_221, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre

构造是:

[INFO] BUILD SUCCESS

在我的一个项目中,除了上面的所有答案外,还有另外一个尝试: 只需改变 工程项目结构的模块部分中的 语言水平[下图] [ IMG src = “ https://i.stack.imgur.com/qxE24.png”alt = “ Language Level”> ] 1

我也有同样的问题,问题是属性。检查项目中的 JavaSE 版本,它将显示在项目中 JRE 系统库文件夹的旁边。如果是1.5,那么它将抛出一个错误。很可能你会有一个更新的版本,所以检查版本和更新它。我已经根据你的代码在下面更新了它。

<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>

我也有同样的问题,我在 pom.xml 中添加了下面的配置,它可以工作。

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

帮助我的是 pom.xml 文件中的这些行

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

下面是帮助我的解决方案:

我有同样的问题,错误源选项5不再支持,使用6或更高

所以我按照这些说明和问题 解决了

  1. 打开项目属性(文件菜单)
  2. 将 Source/Binary Format 更改为最新版本(在我的示例中为 JDK 7)

工程项目物业 enter image description here

源/二进制格式 enter image description here

清理和构建,然后运行项目

我当时也面临着同样的问题,并用下面的代码行解决了它:

<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>

如果在 Eclipse 中,写单击 project 并转到 properties。在那里搜索 maven 并配置一个 jdk 更高版本(1.7以上) ,然后应用。现在试试 maven install。

以上的解决方法对我都不管用。

由于某些原因,名为 project.iml 的文件发生了更改。找到了以前提交的颠覆存储库中的不同之处..。

在 projectname.iml 中,我发现了这一行:

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_5">

我要做的就是把它改成11

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">

在我的案例中,运行 MacOSBigSur 和 JDK 版本15,我在下面所示的 pom.xml文件中添加了以下代码。我为 JDK 版本添加了 15

<properties>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
</properties>

然后我重新运行 $ mvn clean wildfly:deploy,它工作了。

这两个选项对我都有效,解决了源选项5不再受支持的问题。在 Maven 编译时使用6或更高版本”

打开 pom.xml 文件

选项1: 添加构建标记

选项2: 添加属性标记

<project>
<groupId>com.pluralsight</groupId>
<artifactId>HelloWorld</artifactId>
<version>1.0-SNAPSHOT</version>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
    

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>12</release>
</configuration>
</plugin>
</plugins>
</build>
</project>


OR


<project>
<groupId>com.pluralsight</groupId>
<artifactId>HelloWorld</artifactId>
<version>1.0-SNAPSHOT</version>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>


<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
</project>

在 pom 中添加下面的代码可以解决这个问题

 <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<profiles>

这是来自较新的 javac的消息,例如:

$ java -version
openjdk version "11" 2018-09-25


$ javac -source 1.5 -target 1.5 Test.java
error: Source option 5 is no longer supported. Use 6 or later.
error: Target option 1.5 is no longer supported. Use 1.6 or later.

所以,显然你使用的是一个更新的 JDK 版本,Maven 版本在3.8.0之前(“ ABC0/<target>... 注意:从3.8.0开始,默认值从1.5改为1.6”)。你使用的 maven-compiler-plugin:3.1由2013年4月起

有两种可能性:

  1. 将 Maven 版本更新到最新版本(我建议这样做)

  2. 在 Maven 中设置 Java 版本:

2.2 Java 9及以上版本

...

<properties>
<maven.compiler.release>...</maven.compiler.release>
</properties>

I Solved it this way 我面临着同样的挑战,我所做的就是:

  1. 档案
  2. 项目结构
  3. 模组
  4. 将编译 SDK 更改为30(最新版本)
  5. 构建工具30.0.3(最新版)
  6. 源代码兼容性(1.8 Java8)
  7. 目标兼容性(1.8 Java8)

改变

  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">

  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">

enter image description here

根据您的安装设置从构建路径更新的 Java 版本

我通过在 pom.xml文件中添加以下内容修复了这个问题:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

经过这么多年,高兴地看到同样的错误

[ ERROR ]源选项5不再受支持。请使用7或更高版本。 [错误]不再支持目标选项5。请使用7或更高版本。

Xml 没有任何源声明或目标声明,因此 maven 必须采用一些过时的版本作为默认值,而不是聪明地从安装 JVM (目前位于18)中获取它。

因此,在不知道原始问题的情况下,我也可以通过下面的代码片段来解决它。它声明特定的源和目标版本,从而减少问题。

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>18</source>
<target>18</target>
</configuration>
</plugin>
</plugins>
</build>

有人问道:

我理解这个工作,但我不明白为什么 Maven 使用它不支持的默认源值?-

答案是:

  • Maven 不知道您将使用哪个版本的 JDK。

  • 当与 JDK 1.8一起使用时,Maven 编译成功。

  • 在使用较新版本的 JDK 时,不清楚使用哪个版本的字节码 你想要的。因此,Maven 已经弃船,并继续使用它已经使用了多年的东西。

在这个时代,Maven (作为一个通用的构建工具)很难选择一个人人都喜欢的 默认字节码版本

因此,最好习惯于将源代码的版本和要生成的字节代码放在 pom.xml 文件中。

您可以争辩(我也同意) maven 应该(默认情况下)使用更新版本的 maven-compiler-plugin,但正如我所说的,无论选择哪个版本,都会有人对它提出问题。

例子

例如,如果使用 JDK11,则可能正在使用 Java11语法,并且在编译代码时需要使用 -source 11 -target 11

即使是最新发布的插件 maven-compiler-plugin:3.10.1也默认使用 JDK 1.7语法,这会导致 Java 11代码的编译错误。

问题的完整描述

其他人也这么说过,但要完整。默认的 pom.xml 没有指定 maven- 编译器-插件。查找您可以使用的版本

mvn help:effective-pom | more
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>

您将看到正在使用 maven-compiler-plugin:3.1。 您可以看到,这个版本使用 -target 1.5 -source 1.5生成一个命令,当使用比 Java 1.8更新的 Java 版本时,该命令会生成一个错误。

下面显示了使用 JDK17时发生的错误。

mvn --version
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: D:\p\apache-maven-3.8.6
Java version: 17.0.2, vendor: Oracle Corporation, runtime: D:\p\jdk-17.0.2
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"


mvn clean install -X
. . .
[DEBUG] -d D:\Play\maven\helloworld\target\classes -classpath D:\Play\maven\helloworld\target\classes; -sourcepath D:\Play\maven\helloworld\src\main\java; -g -nowarn -target 1.5 -source 1.5
. . .
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
[INFO] 2 errors

解决问题

修复的方法是更新 maven pom.xml 文件,以指定更新的 maven-compiler-plugin。我测试了 maven-compiler-plugin:3.10.1和它使用 -target 1.7 -source 1.7

语法是:

  <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
</plugin>
</plugins>
</build>

在撰写本文时,3.10.1是最新的版本。

另一种选择是指定要生成的字节代码的版本,一种方法是使用这个版本(如另一个答案中所述) :

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

这将工作,甚至与旧版本3.1插件。