从1.6迁移到1.7后,无法在Jetbrains Intellij中使用Java 1.7进行编译(基于maven的项目)

从1.6迁移到1.7后,无法在Jetbrains Intellij中使用Java 1.7进行编译(基于maven的项目),java,intellij-idea,javac,Java,Intellij Idea,Javac,使用基于Maven项目的Jetbrains 11.2项目。然后,我需要移动到1.7。我安装了1.7,更新了pom.xml,我可以使用maven okay重建整个包 我已经修改了Intelli项目设置中有关Java版本的所有设置 项目SDk 项目语言级别 模块语言/源代码/语言级别 模块语言/依赖项/模块SDK 但我无法让它编译它抱怨的文件: Error:javac target release of 1.6 conflicts with source release 1.7 然后,我在我的

使用基于Maven项目的Jetbrains 11.2项目。然后,我需要移动到1.7。我安装了1.7,更新了pom.xml,我可以使用maven okay重建整个包

我已经修改了Intelli项目设置中有关Java版本的所有设置

  • 项目SDk
  • 项目语言级别
  • 模块语言/源代码/语言级别
  • 模块语言/依赖项/模块SDK
但我无法让它编译它抱怨的文件:

Error:javac target release of 1.6 conflicts with source release 1.7
然后,我在我的另一台开发机器上尝试使用相同的代码库但不同的Intellij项目,在这台机器上,我得到了一个类似的错误:

Error:javac: source release 1.7 requires target release 1.7
我看不出还有什么需要更改的地方可以让它正常工作。

Doh,找到了

文件/设置/Java编译器/其他命令行参数

从目标1.6更改为目标1.7


但是,它与其他相关选项断开连接,似乎在这里很奇怪

作为另一种解决方案,对我有效的方法是签入模块设置
语言级别属性。它被设置为
8.0 Lambdas
,并更改为
6.0@Overrides in interfaces
,编译后工作正常。

另一个可能的修复方法是确保生成文件具有此处所示的硬编码版本

    <javac target="1.7" source="1.7" ... />

相对于

<property name="java.version" value="1.7" />
<javac target="${java.version}" source="${java.version}" ... />


虽然这可能是由于我对构建文件中变量的工作方式的误解。您可能会认为这是有意义的,但对于IntelliJ 12,我通过打开文件:Project Structure并将Project SDK更新为1.7,将Project语言级别更新为“7.0-钻石、ARM、多捕获等”解决了这一问题

如果您没有使用JDK1.7配置IntelliJ,请使用“新建”按钮添加它。选择“JDK”类型。

IntelliJ 2017(也是2015或2016) 您可以在此处更改编译器版本:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler
 Intellij IDEA -> Preferences -> Compiler -> Java Compiler
 -> Project bytecode version -> 1.7 (for example)
现在将目标字节码版本更改为所需版本

IntelliJ 13或14 您可以在此处更改编译器版本:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler
 Intellij IDEA -> Preferences -> Compiler -> Java Compiler
 -> Project bytecode version -> 1.7 (for example)

我遇到了同样的问题。 我通过Intellij IDEA->Preferences->Compiler->Java编译器解决了这个问题
->Project bytecode version->1.7和Target bytecode version->1.7

从Maven导入时添加了这些选项。类似问题如下: