概述:mac上 mvn compile 失败,提示工程jdk版本低,但之前都可以。
原因:jdk版本变成14导致 (mac,最近安装了jdk14,java_home默认选择最高的jdk版本)
最近写项目,编译的时候发现使用 mvn clean compile
编译失败。报错信息如下:
[ERROR] COMPILATION ERROR :
[INFO] ---------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
错误: 不再支持源选项 6。请使用 7 或更高版本。
错误: 不再支持目标选项 6。请使用 7 或更高版本。
因为项目比较久远,maven中指定的jdk版本是1.6。
然后网上搜索解决办法,都是说在pom.xml中或maven的setting.xml中修改java版本的。
但是我之前都是可以编译成功的!所以根本不是因为pom中jdk版本的问题。(并且对于这种比较久远的工程随便升级jdk版本不太好,容易引发其他未知问题)
然后发现,使用idea里面的maven插件能够编译成功!!!
那么就有线索了,命令行中使用的maven不行,但是idea中的maven可以。于是看一下maven的版本信息,
mvn -version
Apache Maven 3.6.3
Maven home: /Users/xxx/develop/tools/apache-maven-3.6.3
Java version: 14.0.2, vendor: Oracle Corporation, runtime: /Users/xxx/Library/Java/JavaVirtualMachines/openjdk-14.0.2/Contents/Home
Default locale: zh_CN_#Hans, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.6", arch: "x86_64", family: "mac"
!!!java version:14
又看了一下配置文件
export JAVA_HOME=$(/usr/libexec/java_home)
JAVA_HOME路径不是写死的。而是从/usr/libexec/java_home
读取的。
那就用这个查一下java版本
/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
14.0.2, x86_64: "OpenJDK 14.0.2" /Users/xxx/Library/Java/JavaVirtualMachines/openjdk-14.0.2/Contents/Home
1.8.0_251, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
/Users/xxx/Library/Java/JavaVirtualMachines/openjdk-14.0.2/Contents/Home
原来之前安装了jdk14,然后jdk被/usr/libexec/java_home
自动切换到最高的14去了。
然后就改配置文件,把jdk切回1.8的。编译成功。