首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java 17和maven-原型-快速启动提供错误:不再支持源选项5

Java 17和maven-原型-快速启动提供错误:不再支持源选项5
EN

Stack Overflow用户
提问于 2022-03-01 15:04:01
回答 1查看 1K关注 0票数 0

当使用maven命令创建一个简单的Maven项目(使用最新版本的maven和java)时,我得到了错误:

代码语言:javascript
运行
复制
[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

以下是详细资料

代码语言:javascript
运行
复制
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示例程序。

代码语言:javascript
运行
复制
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/

构建代码

接下来,构建代码并观察错误。

代码语言:javascript
运行
复制
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版本使用的是成功的编译。

代码语言:javascript
运行
复制
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"

我的问题是,我如何解决这个问题?和为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-30 02:49:58

出现这个问题是因为maven插件(maven编译器- plugin :3.1)将参数-source 1.5 -target 1.5传递给JDK 17 java编译器。

JDK 17编译器不支持为Java1.5运行时生成代码,因此产生的错误如下所示:

代码语言:javascript
运行
复制
[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调试标志,您可以看到这一点,如下所示:

代码语言:javascript
运行
复制
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文件中。

代码语言:javascript
运行
复制
<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是一个可行的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71310532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档