想法:javac:源版本1.7需要目标版本1.7


474

使用IntelliJ IDEA运行JUnit测试时,我得到

在此处输入图片说明

我该如何纠正?

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

Maven构建工作正常。(这就是为什么我在IDEA配置问题中相信这一点的原因)

Answers:


689

您很可能在这里从Maven导入了不正确的编译器选项:

编译器选项

还要检查屏幕快照中概述的项目和模块字节码(目标)版本设置。

配置了语言级别的其他位置:

  • 项目结构 项目

项目

  • 项目结构 模块(检查每个模块)| 资料来源

资料来源

Maven的默认语言级别1.5(5.0),您将在上面的屏幕截图中将此版本视为模块语言级别。

可以使用里面的maven-compiler-plugin配置来更改pom.xml

<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项目工具窗口中重新导入 Maven项目后,IntelliJ IDEA将遵循此设置:

重新导入


2
正确。此设置是项目中所有模块的通用设置,还是特定于给定模块的设置?
詹姆斯·赖采夫

1
此设置针对每个项目,影响所有模块。
CrazyCoder 2012年

8
在解决此问题并应用后,是否有任何原因会导致它恢复为某个不正确的值(通过Maven更改或其他方式)?
Patrick

5
@Patrick,您的pom.xmlJava编译器插件配置可以指定Java版本,下次您对pom.xml进行更改(如果启用了自动重新导入)或手动重新导入项目时,它将覆盖此设置。
CrazyCoder 2012年

1
@CrazyCoder我更早地更改了pom.xml后就更改了它(正在等待pom的其他传入更改),所以听起来像是一个非常合理的解释。谢谢
Patrick

358

IntelliJ 15,2016和2017

类似于以下针对IntelliJ 13和IntelliJ 14讨论的内容,但在“设置/首选项”面板中有一个附加级别:设置 > 构建,执行,部署 > 编译器 > Java编译器

在此处输入图片说明

IntelliJ 13和14

在IntelliJ 13和14中,检查“ 设置”>“编译器”>“ Java Compiler UI”,以确保您未在​​模块中定位其他字节码版本。

在此处输入图片说明


3
我不得不删除我的模块并使其自动解析(jdk默认保留空白)
Akin Okegbile 2015年

3
最新的Idea14.1作品
Tushar

那么这里的解决方法是什么?
AlikElzin-kilaka

@ AlikElzin-kilaka,将目标水平设置为您需要的任何水平。
Drew Noakes

有人可以解释为什么他们将特定的模块设置放在全局首选项配置屏幕中,而不是在模块设置中吗?
MK。

61

IntelliJ IDEA 14.1中,“目标字节码版本”位于其他位置。

以下更改对我有用:

文件>设置...>构建,执行,部署>编译器> Java编译器:将目标字节码版本从1.5 更改为1.8

在此处输入图片说明

在此处输入图片说明


或者最好在可以通过jdk确定时将其留空!
Dragonborn 2015年

为什么配置与maven不同?
AlikElzin-kilaka '16

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>

22

我遇到了这个问题,解决方法是转到“项目设置”>“模块”>单击特定的模块>“依赖项”选项卡。我注意到Module SDK仍然设置为1.6,我将其更改为1.7,并且可以正常工作。


我尝试了此操作...我最终不得不删除单个模块,然后让它们自动解决。
Akin Okegbile 2015年

14

我已经在设置>编译器> Java编译器中找到了所需的选项(“目标字节码版本”)(intelij想法12.1.3)


10

在以下路径中修改项目的编译器设置文件,并将“目标”更改为1.7:

/project/.idea/compiler.xml

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

谢谢,这对我有用!不要忘记通过右键单击该项目来执行“使模块'[您的应用名称]'”
Shehaaz

5

我通过将字段设置为空白来解决它:

设置>编译器> Java编译器>项目字节码版本

比IntelliJ使用JDK默认版本。


4

从一个时刻到另一个时刻,我也得到了这个错误,没有明确的原因。我更改了编译器/模块等上的所有设置。但是最后,我只是通过重新导入Maven项目来重新创建了IntelliJ项目,并解决了该问题。我认为这是一个错误。

IntelliJ 12 129.961


此处与IntelliJ 14.1.2相同。重新导入该项目,它是固定的。
srikanth

4

从IntelliJ IDEA 14到v14.1的微小升级后,我就遇到了这个问题。对我来说,更改top / parent pom的编辑会有所帮助,然后单击re-import Maven(如果它不是自动的)。

但这仅足以右键单击模块/聚集/父模块,然后单击Maven->重新导入。


这对我有用!我是为我的顶层模块和子模块完成的
abelnation

2

我解决了波纹管方法

文件>>项目结构>>项目>>项目语言级别->设置适当的版本(例如:1.5)


1

检查.idea / misc.xml有时您需要手动更改languageLevel =“ JDK_1_X”属性


1

如果是Gradle项目,请在build.gradle文件中搜索以下设置:

sourceCompatibility = "xx"
targetCompatibility = "xx"

对于所有子对象,可以在根build.gradle文件中输入:

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

尽管您可以在Idea>设置中手动设置语言级别,但是如果它是Gradle项目,则Idea会自动从Gradle设置中同步模块.iml文件(已通过Idea 15+测试)。因此,刷新gradle时,所有手动更改都会被覆盖。

根据Gradle文档,如果未设置这些参数,则使用当前的JVM配置。


1

我发现了另一种遇到此错误的方法。如果您已经重新组织了目录结构,并且其中一个poms指向了不再配置javac的旧父目录(因为该配置已移至中间级别),则可以获得此信息。如果发生这种情况,顶级默认为1.5,行为不当的低级pom继承它。

因此,当您看到此错误时要检查的另一件事是pom结构与目录结构正确匹配。


1

如果Maven构建正常,请尝试同步Maven和IntelliJ IDEA项目的结构。

Maven工具窗口中,单击“刷新”按钮刷新。按下此按钮时,IntelliJ IDEA会在Maven工具窗口中解析项目结构。

请注意,如果您使用EAP构建,这可能无济于事,因为Maven同步功能有时可能会中断。



0

如果以前的所有解决方案都不适合您(我就是这种情况),则可以删除intellij配置文件:

  • project_directory / .idea / compiler.xml
  • project_directory / .idea / encodings.xml
  • project_directory / .idea / misc.xml
  • project_directory / .idea / modules.xml
  • project_directory / .idea / vcs.xml
  • project_directory / .idea / workspace.xml
  • 等等

Intellij稍后将重新生成新的。 但是,请小心,这还将删除在projet上进行的所有intellij配置(即:调试模式的配置,...)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.