一、问题描述
在项目的一个模块的根目录下,通过命令行执行 Maven 编译指令mvn complie
出现构建失败,终端报错BUILD FAILURE
:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(default-compile) on project maven-javaee-build-05: Fatal error compiling: ЧĿ귢а: 17 -> [Help 1]
而使用 IDEA 的可视化界面就一切正常:
二、解决过程
1.官方文档
以后只用IDEA的可视化界面也就行了。但按理来说,这只是同一套构建指令的两种操作方式,不应当出现区别。出于好奇,我进入了终端报错 INFO 给出的帮助文档(MojoExecutionException - Apache Maven - Apache Software Foundation)。
该报错和Maven
本体无关,而是由于某个插件异常引起的。可以在 Plugin 列表(Apache Maven Compiler Plugin -- Plugin Documentation)可找到compiler
插件的详细说明。
2. 命令行 --help 帮助
此外,可以在终端中输入用mvn compile -h
查看参数用法。
3.检查 Java 版本
我的项目所用 JDK 是corretto-17.0.9
:
shell
$ java -version #调用系统环境变量
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
在maven的 setting.xml
下已经添加了 profile
:
xml
<profile>
<id>jdk-17</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>17</jdk>
</activation>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
</properties>
</profile>
问题在于,本地机器上的用户环境变量JAVA_HOME
仍是之前使用的Java 1.8
,而 Maven 默认调用的就是这个用户环境变量。
三、解决方案
将用户环境变量 JAVA_HOME
值改为项目所用的 JDK 的目录。 问题解决: