这次编译一个半年没动过的老项目,报了几次版本错误,通过多次尝试最终解决掉了该问题
错误一:Diamond types are not supported at language level '6'
错误背景
该错误出现在intelijj中,打开项目后,下面的代码的后一个菱形括号报红,表明当前版本不支持new ArrayList<>()这种写法
List<String> list = new ArrayList<>()
修改方法
第1个需要修改的地方:在Intellij中点击“File” -->“Project Structure”,看一下“Project”、“Module”、"SDKs"栏目中Java版本是否与本地一致
第2个需要修改的地方:在“Settings”-->“Bulid, Execution,Deployment”->"Build Tools"->"Maven"中查看User setting file中的文件,是否有设置java版本
如果有下面这样的内容,需要将其修改为1.8
第3个需要修改的地方:在“Settings”-->“Bulid, Execution,Deployment”-->“Java Compiler”,Target bytecode version更改为1.8。
基本上改上面三个地方就可以避免上述的错误了
错误二:-source 1.6 中不支持 diamond 运算符
错误背景
上面的错误解决了,并不意味着就没有问题了。在执行maven打包时,会出现-source 1.6 中不支持 xxx 这样的错误
修改方法
修改pom.xml文件,查看是否存在着1.6版本
在我的pom.xml中确实存在1.6的配置,而且还配置了两个,只不过最后一个会生效,有三种解决方法:
一是删除后面两个plugin,保留第一个没有configuration的配置
二是删除第一、二个plugin,第三个plugin的source和target改成1.8
三是删除后两个plugin,同时在properties中指定版本
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
参考:
idea报java版本错误解决方法-CSDN博客
-source 1.7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式)-CSDN博客"-source 1.5 中不支持方法引用,请使用 -source 8 或更高版本以启用方法引用"的解决方案 - 简书 (jianshu.com)