Maven enforcer检测不到AdoptOpenJDK-11导致JHipster项目构建失败
问题根因
你遇到的版本不兼容问题核心是sudo运行命令时的环境变量和当前登录用户的环境变量不一致导致的:
- 你直接执行
java --version、mvn enforcer:display-info用的是当前用户配置的环境变量,读取的是你设置的AdoptOpenJDK 11.0.11,符合版本要求 - 执行
sudo mvn时,sudo默认会重置PATH、JAVA_HOME等环境变量,调用的是系统全局默认的Java版本,多数Linux发行版默认自带的系统Java版本为JDK 17及以上,超出了JHipster支持的最高JDK 14的要求,所以触发了maven-enforcer-plugin的校验报错
查看sudo环境下Maven实际识别的Java版本
执行以下命令即可直接得到Maven在sudo权限下实际调用的JDK版本:
sudo mvn enforcer:display-info
也可以直接查看sudo下的全局Java版本验证:
sudo java --version
解决方案
两种可行方案按需选择即可:
方案1:保留sudo执行,同步当前用户的环境变量
在sudo命令后加-E参数,保留当前用户的环境变量配置,即可使用你本地配置的JDK 11执行构建:
sudo -E mvn clean install -U
方案2:修复目录权限,彻底避免使用sudo执行构建
之前不加sudo报错是因为项目目录下存在归属root用户的文件,将项目目录所有权改回你的当前用户即可:
# 替换your-user为你的实际用户名,替换路径为你的项目实际路径 sudo chown -R your-user:your-user /path/to/your/jhipster/project
权限修复完成后就可以直接用当前用户执行构建,不需要再加sudo:
mvn clean install -U
内容的提问来源于stack exchange,提问作者cluis92
相关产品推荐
相关产品推荐

