maven编译始终提示无效的目标发行版的解决方法

复制代码
摘自个人印象笔记2021-05-07:https://app.yinxiang.com/fx/55e1d5f4-aeea-446a-a768-0f1a48195f5b(图显示不完整可查看原笔记内容)

1:确保IDE中的编译版本正确

在idea中,主要看项目属性中和setting的java compiler中对应的jdk版本是否正确,如下:

项目属性中查看:

setting中查看:

2:确保pom文件中的maven-compiler-plugin插件配置正确
org.apache.maven.plugins maven-compiler-plugin 3.1 1.9 1.9

3:如果mvn compile编译提示如下异常信息:

ERROR To see the full stack trace of the errors, re-run Maven with the -e switch.

ERROR Re-run Maven using the -X switch to enable full debug logging.

可使用以下命令显示mvn编译详细信息:

mvn -X -U clean compile

4:如果以上1、2项都正确,但仍然提示"无效的目标发行版",则需要重点注意:

用以下命令查看mvn所使用的jdk是哪个版本:

mvn -version

输出如下字样:

注意,其中的Java version代表着maven使用的jdk版本,此版本要和maven-compiler-plugin插件中配置的source和target的版本相对应!

比如以上图中配置的编译版本是1.9,但是maven实际使用的是1.8的jdk,则会提示"无效的目标发现版本:1.9"!!!

原理:

Maven是从JAVA_HOME变量中而不是从PATH环境变量中获取的Java版本,所以本机即使配置的1.9的默认jdk,但是由于JAVA_HOME指向的是另外一个jdk,就会出现编译版本的问题!

相关推荐
见叶之秋1 分钟前
C++ 泛型世界的两块拼图:容器适配器与仿函数
java·开发语言
MayBaymax16 分钟前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
Dovis(誓平步青云)24 分钟前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
yuniko-n42 分钟前
【Java】字符串相关坑点
java·开发语言·python
Terra.K43 分钟前
Spring AI day1(SSE+AI)
java·人工智能·spring·springai
斑鸠喳喳1 小时前
线程本地存储 ThreadLocal
java·后端
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: 服务拆分案例 Demo
java·开发语言·spring cloud
DongQiShanRen2 小时前
裁决台账双向互校(上):名册与实物的第一道对账
java·linux·运维·数据库·人工智能·自然语言处理·数据挖掘
cpolar技术支持3 小时前
Spring Boot 接口本地正常,异地前端却报跨域?用 cpolar 跑通 CORS 预检与白名单
java·springboot·cpolar·前后端分离·cors
wuminyu3 小时前
Virtual Thread重投递至ForkJoinPool任务队列过程解析
java·linux·c语言·jvm·c++