【发布时间】:2012-10-05 16:58:30
【问题描述】:
使用 IntelliJ IDEA 运行 JUnit 测试时,我得到了
我该如何纠正这个问题?
- 使用 SDK 1.7
- 模块语言级别为 1.7
Maven 构建工作正常。 (这就是为什么我在 IDEA 配置问题中相信这一点)
【问题讨论】:
标签: java intellij-idea
使用 IntelliJ IDEA 运行 JUnit 测试时,我得到了
我该如何纠正这个问题?
Maven 构建工作正常。 (这就是为什么我在 IDEA 配置问题中相信这一点)
【问题讨论】:
标签: java intellij-idea
您很可能在此处从 Maven 导入了不正确的编译器选项:
还要检查屏幕截图中列出的项目和模块字节码(目标)版本设置。
其他配置source语言级别的地方:
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 Projects 工具窗口中的 Maven 项目后,IntelliJ IDEA 将遵循此设置:
【讨论】:
pom.xml java 编译器插件配置可能会指定 Java 版本,下次您更改 pom.xml(如果启用自动重新导入)或重新导入手动项目。
我遇到了这个问题,解决方法是转到项目设置 > 模块 > 单击特定模块 > 依赖项选项卡。我注意到模块 SDK 仍然设置为 1.6,我将其更改为 1.7 并且它可以工作。
【讨论】:
我在 settings > compiler > java compiler 中找到了必需的选项('目标字节码版本')(intelij idea 12.1.3)
【讨论】:
从一个时刻到另一个时刻,我也得到了这个错误,没有明确的原因。我更改了编译器/模块等的各种设置。但最后我只是通过重新导入 Maven 项目重新创建了 IntelliJ 项目,问题就解决了。我认为这是一个错误。
IntelliJ 12 129.961
【讨论】:
检查 .idea/misc.xml 有时您需要手动更改 languageLevel="JDK_1_X" 属性
【讨论】:
您是否查看过您的构建配置,如果您使用 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>
【讨论】:
【讨论】:
我解决了下面的方法
文件 >> 项目结构 >> 项目 >> 项目语言级别 --> 设置正确的版本(例如:1.5)
【讨论】:
我通过将字段设置为空白来解决它:
设置 > 编译器 > Java 编译器 > 项目字节码版本
比 IntelliJ 使用 JDK 默认版本。
【讨论】:
在从 IntelliJ IDEA 14 小幅升级到 v14.1 之后,我就遇到了这个问题。 对我来说,更改顶部/父 pom 的编辑有帮助,然后单击重新导入 Maven(如果它不是自动的)。
但是右键单击模块/聚合/父模块和 Maven -> 重新导入可能就足够了。
【讨论】:
在 IntelliJ IDEA 14.1 中,“目标字节码版本”位于不同的位置。
以下更改对我有用:
文件 > 设置... > 构建、执行、部署 > 编译器 > Java 编译器:将目标字节码版本从 1.5 更改为 1.8
【讨论】:
修改项目的编译器设置文件如下路径,将'target'改为1.7:
/project/.idea/compiler.xml
<bytecodeTargetLevel>
<module name="project-name" target="1.7" />
</bytecodeTargetLevel>
【讨论】:
如果是 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 documentation,如果未设置这些,则使用当前的 JVM 配置。
【讨论】:
我找到了另一种遇到此错误的方法。如果您一直在重新组织您的目录结构,并且您的一个 pom 指向不再配置 javac 的旧父级(因为该配置已移至中间级别),您可以获得此信息。如果发生这种情况,顶层默认为 1.5,行为不端的低层 pom 会继承它。
因此,当您看到此错误时要检查的另一件事是您的 pom 结构与您的目录结构正确匹配。
【讨论】:
确保选择了正确的依赖关系。 文件 > 项目结构
选择您的项目并导航到依赖项选项卡。从下拉列表中选择正确的依赖关系或创建新的。
【讨论】:
如果 Maven 构建工作正常,请尝试同步 Maven 和 IntelliJ IDEA 项目的结构。
在Maven tool window,点击刷新按钮。按下此按钮后,IntelliJ IDEA 会在 Maven 工具窗口中解析项目结构。
请注意,如果您使用的是 EAP 构建,这可能无济于事,因为 Maven 同步功能有时可能会被破坏。
【讨论】:
如果之前的所有解决方案都不适合您(我的情况就是这样),您可以删除 intellij 配置文件:
Intellij 稍后会重新生成新的。 但是,请注意,这也会删除在 projet 上进行的所有 intellij 配置(即:调试模式的配置,...)
【讨论】: