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



如何解决此问题?
模块语言级别为1.7

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

#1 楼

很可能您在这里从Maven导入了错误的编译器选项:



还请检查屏幕快照中概述的项目和模块字节码(目标)版本设置。 br />配置源语言级别的其他位置:


项目结构|项目





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




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



评论


正确。此设置是项目中所有模块的通用设置,还是特定于给定模块的设置?

–詹姆斯·赖特塞夫(James Raitsev)
2012年10月15日17:29

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

– CrazyCoder
2012年10月15日17:30

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

–帕特里克(Patrick)
2012年12月3日,21:36

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

– CrazyCoder
2012年12月3日23:18

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

–帕特里克(Patrick)
2012年12月4日19:25

#2 楼

IntelliJ 15、2016和2017

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



IntelliJ 13和14

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



评论


我必须删除我的模块并让它自动解析(对于jdk默认值为空白)

–类似于Okegbile
15年3月27日在17:44

适用于最新的Idea14.1

–图沙
15年6月23日在9:15

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

– AlikElzin-kilaka
16年4月4日在5:35

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

–德鲁·诺克斯(Drew Noakes)
16年4月4日在10:55

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

– MK。
16年11月8日在15:04

#3 楼

在IntelliJ IDEA 14.1中,“目标字节码版本”位于另一个位置。

以下更改对我有用:

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





评论


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

–龙婆
15年11月13日在9:42

为什么配置与maven不同?

– AlikElzin-kilaka
16年4月4日在5:36

#4 楼

您是否查看过构建配置,如果您使用maven 3和JDK 7,应该会感到很满意。

#5 楼

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

评论


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

–类似于Okegbile
15年3月27日在17:43

#6 楼

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

#7 楼

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


/project/.idea/compiler.xml


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


评论


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

– Shehaaz
15年6月20日在18:31

#8 楼

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

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

比IntelliJ使用JDK默认版本。

#9 楼

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

IntelliJ 12 129.961

评论


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

–srikanth
15年8月16日在5:11

#10 楼

从IntelliJ IDEA 14到v14.1的小幅升级后,我就遇到了这个问题。 />
,但是右键单击模块/聚合/父模块和Maven->重新导入也许就足够了。

评论


这对我有用!我为我的顶级模块和我的子模块做到了

–弃牌
2015年4月21日在2:29

#11 楼

我解决了波纹管方法

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

#12 楼

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

#13 楼

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

sourceCompatibility = "xx"
targetCompatibility = "xx"


对于所有子对象,都可以在root build.gradle文件中, put:

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


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

基于Gradle文档,如果未设置这些设置,则使用当前的JVM配置。

#14 楼

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

#15 楼

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

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

#16 楼

您需要在构建配置中更改Java编译器版本。



#17 楼

确保选择了正确的依赖项。
文件>项目结构

选择您的项目并导航到“依赖项”选项卡。从下拉列表中选择权限依赖项或创建新的依赖项。

#18 楼

如果以前的所有解决方案都不适合您(我的情况),则可以删除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将在以后重新生成新的。调试模式,...)