maven编译报错:不再支持源选项5。请使用7或更高版本。

我在macbook上通过brew安装了新版本的maven,然后编译项目就出现了标题中的错误。

经过分析得知,原来新的maven顺带给我安装了一个openjdk11,并且这个mvn命令自身就是用这个jdk11运行的。

mvn命令会使用它启动时的jdk11来编译我们的项目代码,然而我们的代码是JDK8语法的,所以会报一些语法已经被废弃,无法编译成功。

怎么办呢?其实虽然mvn用的是jdk11编译代码,但是jdk其实支持向下编译至低版本的参数:

  • javac -source 1.8:采用jdk8语法进行源代码编译检查。
  • javac -target 1.8:采用jdk8兼容的class二进制格式,这样就可以被jre8运行。

javac -help

-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version

官方说明:https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

所以,我们靠谱的做法应该是令maven调用jdk11的javac编译时带着上面俩参数就行,完全不需要去删除机器上的高版本JDK或者降低maven自身版本,网上误导的文章太多。

通常,我们只需要在pom.xml中加入这么一段配置即可产生上述效果:

本文帮助到你了吗?

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~