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

时间:2012-10-05 11:39:29

标签: java intellij-idea javac

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

我修改了我在Intelli Projects设置中可以看到的有关Java版本

的每个设置
  • Project 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

我无法看到任何其他改变,以使这项工作。

6 个答案:

答案 0 :(得分:38)

Doh,发现它

文件/设置/ Java编译器/附加命令行参数

-target 1.6 更改为 -target 1.7

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

答案 1 :(得分:13)

作为替代解决方案,对我有用的是检查模块设置 语言级属性。它被设置为8.0 Lambdas并更改为6.0 @Overrides in interfaces,之后编译工作没有错误。

答案 2 :(得分:8)

IntelliJ 2017(也是15或2016年)

您可以在此处更改编译器版本:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler

现在将Target bytecode version更改为所需的一个。

IntelliJ 13或14

您可以在此处更改编译器版本:

 Intellij IDEA -> Preferences -> Compiler -> Java Compiler
 -> Project bytecode version -> 1.7 (for example)

答案 3 :(得分:7)

对于IntelliJ 12,我通过打开File:Project Structure并将Project SDK更新为1.7并将Project语言级别更新为“7.0 - Diamonds,ARM,multi-catch等”来解决此问题。

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

答案 4 :(得分:1)

另一个可能的解决方法是确保您的构建文件具有硬编码版本,如此处所示

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

而不是

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

虽然这可能是由于我误解了变量在构建文件中的工作原理。你会认为这会有意义

答案 5 :(得分:1)

我遇到了同样的问题。 我通过Intellij IDEA解决了它 - &gt;偏好 - &gt;编译器 - &gt; Java编译器   - &GT;项目字节码版本 - &gt; 1.7&amp;目标字节码版本 - &gt; 1.7