编译错误信息
编译java代码时,出现编译错误
Error:(71, 31) java: '<>' operator is not allowed for source level below 1.7
这个错误是因为java 源代码版本比idea中设置的源代码版本高所致,还有一类常见错误,就是目标代码版本高于运行时容器版本,比如字节码是1.8版本运行在java1.7就不行。不过,如果源代码版本设置正确,idea会自动识别目标代码版本,一般不用单独设置。
设置源代码language level
注意,如果maven中的pom设置了源代码和目标代码的版本,那么就不用在idea中再设置了,因为idea会自动识别pom中指定的java源代码版本和目标代码版本,并且即使你设置了,idea仍然会用pom中的版本覆盖你的设置。如果项目中没用maven,那么请继续往下看,intellij idea中的源代码language level分为两个层级,project级别的和module级别的,module级别可覆盖project级别。
project 层级的language level
File | project structure(快捷键,ctrl+alt+shift+s)|
module 层级的language level
File | project structure(快捷键,ctrl+alt+shift+s)|
设置字节码版本
File | Settings (快捷键,ctrl+alt+s)| Build, Execution, Deployment | Compiler | Java Compiler
问题-设置的版本,间歇性丢失
也许你遇到过设置了language level,但是间歇性失效问题,尤其是点击maven的刷新按钮(reimport all maven projects)立刻丢失。到这里,相信你基本猜到答案了,对,就是前边提到过的,被maven的设置覆盖掉了。
解决办法就是在pom.xml中设置编译器的源代码版本和字节码版本,配置如下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>