今天早上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编译器插件来解决它:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
但是,我想了解为什么Maven会突然开始行为不端并需要使用编译器插件。
答案 0 :(得分:12)
很可能这是您的环境问题,而不是maven(即您的JAVA_HOME环境变量已更改)。值得注意的是,无论如何都需要编译器插件。通过在pom中包含此编译器部分,您可以确保使用正确的编译器编译代码,无论您的环境设置如何。
答案 1 :(得分:11)
默认的源/目标级别是1.5,显然不支持Java 1.7语法。
至于为什么它会“突然”改变,你的m2e或项目配置发生了一些变化。
答案 2 :(得分:0)
您还可以通过对Eclips用户使用以下步骤来解决此问题,并且对于IntelliJ也可以使用-
右键单击项目,然后选择“构建路径”,然后选择“配置构建路径”。 在Maven下选择Project Facets。 然后将Java版本选择为1.8,然后应用ok。