[开发工具]Maven 构建时报错:

一、问题描述

在项目的一个模块的根目录下,通过命令行执行 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 的目录。 问题解决:

相关推荐
何中应3 分钟前
Spring Boot中选择性加载Bean的几种方式
java·spring boot·后端
web2u1 小时前
MySQL 中如何进行 SQL 调优?
java·数据库·后端·sql·mysql·缓存
michael.csdn1 小时前
Spring Boot & MyBatis Plus 版本兼容问题(记录)
spring boot·后端·mybatis plus
Ciderw1 小时前
Golang并发机制及CSP并发模型
开发语言·c++·后端·面试·golang·并发·共享内存
Мартин.2 小时前
[Meachines] [Easy] Help HelpDeskZ-SQLI+NODE.JS-GraphQL未授权访问+Kernel<4.4.0权限提升
后端·node.js·graphql
程序员牛肉2 小时前
不是哥们?你也没说使用intern方法把字符串对象添加到字符串常量池中还有这么大的坑啊
后端
烛阴2 小时前
Go 语言进阶必学:&^ 操作符,高效清零的秘密武器!
后端·go
网络风云2 小时前
golang中的包管理-下--详解
开发语言·后端·golang
京东零售技术3 小时前
一次线上生产库的全流程切换完整方案
后端
我们的五年3 小时前
【C语言学习】:C语言补充:转义字符,<<,>>操作符,IDE
c语言·开发语言·后端·学习