IDEA: javac:源发布1.7需要目标发布1.7。

512

在使用IntelliJ IDEA运行JUnit测试时,我收到以下错误:

enter image description here

我该如何更正?

  • 使用SDK 1.7
  • 模块语言级别为1.7

Maven构建正常运行。(这就是我认为这是IDEA配置问题的原因)

18个回答

785
很可能您在此处导入了来自Maven的不正确编译器选项:

compiler options

还要检查所示截图中项目和模块字节码(target)版本设置。

其他配置语言级别的地方:

  • 项目结构|项目

project

  • 项目结构|模块(检查每个模块)|

sources

Maven 默认语言级别1.5 (5.0),您可以在上面的截图中看到此版本作为模块语言级别。

这可以使用pom.xml中的maven-compiler-plugin配置进行更改:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>
或者
<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

在你在Maven项目工具窗口中重新导入后,IntelliJ IDEA将会遵循这个设置:

reimport


2
这个设置是针对项目中的所有模块通用的,还是只适用于特定的模块? - James Raitsev
1
此设置是按项目设置的,将影响所有模块。 - CrazyCoder
9
在修复问题并应用更改之后,是否存在某些原因导致它会恢复到某些不正确的值(无论是通过maven更改还是其他方式)? - Patrick
5
@Patrick,你的 pom.xml 中的Java编译器插件配置可能会指定Java版本,这将覆盖下次你对 pom.xml 进行更改时(如果启用了自动重新导入)或手动重新导入项目时的设置。 - CrazyCoder
1
@CrazyCoder,我之前已经更改过pom.xml文件了(因为等待其他pom文件的更改),所以这听起来是一个相当合理的解释。谢谢。 - Patrick
显示剩余5条评论

362

IntelliJ 15, 2016 & 2017

与下面讨论的IntelliJ 13和14类似,但在“设置/首选项”面板中增加了一级: 设置 > 构建、执行、部署 > 编译器 > Java编译器

enter image description here

IntelliJ 13 & 14

在IntelliJ 13和14中,请检查设置>编译器>Java编译器 UI,确保您的模块没有针对不同的字节码版本。

enter image description here


3
我不得不删除我的模块并让它自动解决(留空以使用JDK默认设置)。 - Akin Okegbile
3
适用于最新的Idea14.1版本。 - Tushar
那么这里的修复方法是什么? - AlikElzin-kilaka
@AlikElzin-kilaka,请将目标级别设置为您需要的任何级别。 - Drew Noakes
有人能解释一下为什么他们会在全局首选项配置屏幕中放置特定模块设置,而不是在模块设置中吗? - MK.
@MK 我支持你的问题。我已经将模块的JDK设置为1.8,语言级别设置为8,然后在设置中还有一个随机的设置,仍将模块设置为1.7。这太荒谬了。 - Matt

62
在IntelliJ IDEA 14.1中,"目标字节码版本"选项的位置发生了变化。以下更改适用于我:
文件 > 设置... > 构建、执行、部署 > 编译器 > Java编译器:将"目标字节码版本"从1.5更改为1.8。 enter image description here enter image description here

最好是从jdk中确定,否则最好留空! - Dragonborn
为什么配置与Maven不同? - AlikElzin-kilaka

42

你是否查看了你的构建配置?如果你使用Maven 3和JDK 7,它应该是这样的。

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>

23

我遇到了这个问题,解决方法是进入项目设置 > 模块 > 点击特定模块 > 依赖项选项卡。我注意到模块 SDK 仍然设置为1.6,我将其更改为1.7,然后它可以工作了。


我尝试过这个... 最终不得不删除各个模块,让它们自动解决。 - Akin Okegbile

15

在我的情况下 (Intelij idea 12.1.3),我发现所需选项(“目标字节码版本”)在设置>编译器>Java编译器中。


10

请前往以下路径修改项目的编译器设置文件,并将“target”更改为1.7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>

谢谢,这对我有用!别忘了通过右键单击项目执行“制作模块 '[你的应用程序名称]'”。 - Shehaaz

5
我通过将字段设置为空来解决了这个问题:
设置 > 编译器 > Java编译器 > 项目字节码版本
然后IntelliJ使用JDK的默认版本。

4

突然间我就遇到了这个错误,原因不明。我更改了编译器和模块等各种设置,但最终我只是重新导入了Maven项目来重新创建IntelliJ项目,问题就解决了。我认为这是一个bug。

IntelliJ版本号为12 129.961。


同样的问题在IntelliJ 14.1.2中也出现了。重新导入项目后问题得到解决。 - srikanth

4

在我将IntelliJ IDEA 14升级到v14.1后,就遇到了这个问题。

对我来说,改变一个顶层/父POM的编辑有所帮助,然后点击重新导入Maven(如果没有自动导入)。

但是只需右键单击模块/聚合/父模块,然后选择Maven -> Reimport即可。


这对我有用!我为我的顶级模块和子模块做了它。 - abelnation

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