为什么Maven会产生这个错误:“……在源代码1.5中不支持”?

今天早上Maven开始抱怨这个错误:

error: multi-catch statement is not supported in -source 1.5

奇怪的是,我正在使用JDK 7,这段代码已经好几周了。 我只是使用m2e和默认的POM,没有指定编译器版本。

这是我的Maven版本信息:

 Apache Maven 3.0.2 (r1056850; 2011-01-08 19:58:10-0500) Java version: 1.7.0_03, vendor: Oracle Corporation Java home: C:\SDKs\Java\jdk1.7.0_03\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

我可以通过使用Maven编译器插件来解决它:

   org.apache.maven.plugins maven-compiler-plugin 2.4  1.7 1.7   

不过,我想了解为什么Maven会突然开始行为不端并要求使用编译器插件。

这很可能是你的环境问题,而不是maven(即你的JAVA_HOME环境变量发生了变化)。 值得注意的是,无论如何都需要编译器插件。 通过在pom中包含此编译器部分,您可以确保使用正确的编译器编译代码,而不管您的环境设置如何。

默认的源/目标级别是1.5,显然不支持Java 1.7语法。

至于为什么它会“突然”改变,你的m2e或项目配置发生了一些变化。