最近拿到一个maven系统,需要使用jdk1.8的环境才能运行(公司开发使用jdk1.7),于是下载、安装jdk1.8。
安装完成之后(本人使用idea工具),打开module settings,设置里面的Modules->Dependencies->module sdk为安装好的1.8版本,同时还得设置Modules->Dependencies->sources模块中的Language Level为8。
这样操作之后其实只是设置了module的sdk,若是工程中有很多modules,可以直接设置Project菜单下的project sdk,同时别忘了设置project language level。(在jdk1.8中支持了lambda方式,若是使用了,就必须吧language level切换为8,否则是不认的)
这时可以去执行代码,突然发现编译出错
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project jiraRobot: Compilation failure: Compilation failure:
[ERROR] /Users/Documents/workspace/*.java:[29,62] 错误: -source 1.5 中不支持 diamond 运算符
[ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符)
经过查看应该是利用maven的插件maven-compiler-plugin来进行的编译,但是这个编译指定的版本却是1.5的,所以编译肯定会失败的。
可以通过增加配置,以纠正错误,如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <!-- 源代码使用的开发版本 --> <target>1.8</target> <!-- 需要生成的目标class文件的编译版本 --> <!-- 一般而言,target和source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行,会存在target和source不一致的情况 --> </configuration> </plugin> </plugins> </build>
配置修改之后再运行就没有任何问题了。