在从Java 1.6迁移到1.7后,使用Jetbrains Intellij编译(maven项目)时无法编译。

24

我使用Jetbrains 11.2基于Maven项目。现在我需要迁移到1.7版本。我已经安装了1.7版本,更新了pom.xml文件,并且可以通过Maven重新构建整个包。

我已经修改了IntelliJ项目设置中所有可见的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

我没有看到任何其他需要更改的地方,以使其正常工作。

6个回答

38

找到了

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

-target 1.6更改为-target 1.7

虽然与其他相关选项无关,但看起来很奇怪。


2
导入 Maven 时会添加这些选项。 - CrazyCoder

13
作为一个替代方案,对我有用的方法是检查模块设置中的语言级别属性。它被设置为8.0 Lambdas并更改为6.0 @Overrides in interfaces,之后编译就可以无误运行了。

9

IntelliJ 2017 (也适用于15或2016版)

你可以在这里更改编译器版本:

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

现在将 目标字节码版本 更改为所需的版本。

IntelliJ 13或14

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

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

这里有类似的问题:https://dev59.com/Amcs5IYBdhLWcg3wYy9T - Benj

7

对于IntelliJ 12,我通过打开文件:项目结构并将项目SDK更新为1.7以及将项目语言级别更新为“7.0-钻石、ARM、multi-catch等”来解决了这个问题。

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


1
另一个可能的解决方法是确保您的构建文件硬编码了版本,如下所示。
    <javac target="1.7" source="1.7" ... />

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

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


1
我遇到了同样的问题。我通过Intellij IDEA -> Preferences -> Compiler -> Java Compiler -> Project bytecode version -> 1.7 & Target bytecode version -> 1.7解决了它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接