总结:这是编译器的版本问题。
情形1
新建maven项目,jdk选9 , pom如下
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>example-project</artifactId>
<version>1.0-SNAPSHOT</version>
执行mvn install 会报错:
第一行:标题所示错误
第二行:[ERROR] Source option 1.5 is no longer supported. Use 1.6 or later.
[ERROR] Target option 1.5 is no longer supported. Use 1.6 or later.
解决:
pom中添加:
<properties>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
情形2
改jdk为11.02,pom中保留版本的修改。mvn install仍然报错:
第一行:标题所示错误
第二行:没有多余信息
terminal里执行 mvn install -e
得到多余的错误信息:invalid target release 11.0.2 ,说明是结尾的小版本号不受支持。所以不用$变量,直接写死11
再运行success
以上2种方法,都是在项目pom中设置。也可以不在项目里写,而统一在maven全局配置文件setting里profile字段下面设置jdk版本。
但是,当setting里设置9 ,而项目里用properties设置11 ,源码里出现11新语法时比如var,idea会飘红cannot resolve symbol,mvn install 也会报错cannot find symbol 如果你只飘红没有install报错,那你试试改动源码也许就会报错了。解决方法是使用 “编译器插件”插件版本不一定用下面的381
不要properties部分
在build -> plugins标签下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>