当使用maven命令创建一个简单的Maven项目(使用最新版本的maven和java)时,我得到了错误:
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
--那么,修复这个问题需要什么更改。--我是修改maven命令还是编辑pom.xml文件?
复制错误
首先验证您正在运行的是哪些版本的和Maven。在本问题发生时,我使用的是最新版本的Maven和Java。Maven: 3.8.4和Java 17.0.2
以下是详细资料
mvn --version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: D:\p\apache-maven-3.8.4
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"
java -version
java version "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode, sharing)
创建maven hello类世界程序
我使用这个命令来创建Java示例程序。
mvn archetype:generate -DgroupId=com.example -DartifactId=helloworld -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
我找到了下面的链接,它详细地解释了这一点(如果需要的话)。https://facingissuesonit.com/2017/06/06/how-to-create-maven-java-console-project/。
构建代码
接下来,构建代码并观察错误。
cd helloworld
mvn clean install
[ERROR] COMPILATION ERROR :
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
注意错误。
但是,如果我切换回Java8(JDK1.8)并运行maven构建命令,那么代码将成功编译。下面的是成功的编译,而maven版本和JDK版本使用的是成功的编译。
mvn clean install
[INFO] BUILD SUCCESS
mvn --version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: D:\p\apache-maven-3.8.4
Java version: 1.8.0_271, vendor: Oracle Corporation, runtime: D:\p\jdk1.8.0_271\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
我的问题是,我如何解决这个问题?和为什么会发生这种情况?
发布于 2022-04-30 02:49:58
出现这个问题是因为maven插件(maven编译器- plugin :3.1)将参数-source 1.5 -target 1.5
传递给JDK 17 java编译器。
JDK 17编译器不支持为Java1.5运行时生成代码,因此产生的错误如下所示:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
如果在运行maven命令时使用-X
调试标志,您可以看到这一点,如下所示:
mvn -X clean install
. . . lots of output omitted . . .
[DEBUG] Command line options:
[DEBUG] -target 1.5 -source 1.5 -d target\classes -classpath target\classes; -sourcepath src\main\java; -g -nowarn
. . .
修复方法是修改pom.xml
文件,以便maven编译器插件将传递诸如-source 1.8 -target 1.8
(或更高的数字)等选项,以便JDK 17能够生成针对JDK 17编译器支持的JDK版本的代码。
例如,要使用JDK1.8,需要将以下内容添加到pom.xml
文件中。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
如果您感兴趣的话,问答https://stackoverflow.com/a/60344341/3281336还可以添加更多的信息。
注意: 3.1版本的maven编译器插件是非常古老的(2013年4月发布的)基于https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin的版本,所以那时JavaVersion1.5是一个可行的选择。
https://stackoverflow.com/questions/71310532
复制相似问题