IDEA:javac:源版本 1.7 需要目标版本 1.7

Posted

技术标签:

【中文标题】IDEA:javac:源版本 1.7 需要目标版本 1.7【英文标题】:IDEA: javac: source release 1.7 requires target release 1.7 【发布时间】:2012-10-05 16:58:30 【问题描述】:

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

我该如何纠正这个问题?

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

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

【问题讨论】:

【参考方案1】:

您很可能在此处从 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 将遵循此设置:

【讨论】:

正确。此设置是否对项目中的所有模块通用,还是特定于给定模块? 此设置针对每个项目,影响所有模块。 有什么理由在修复这个问题并应用它之后会恢复到一些不正确的值(通过 maven 更改或其他方式)? @Patrick,您的pom.xml java 编译器插件配置可能会指定 Java 版本,下次您更改 pom.xml(如果启用自动重新导入)或重新导入手动项目。 @CrazyCoder 我在更早更改一次之后更改了我的 pom.xml(正在等待对 pom 的其他传入更改),所以这听起来是一个非常合理的解释。谢谢【参考方案2】:

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

【讨论】:

我试过这个...我最终不得不删除各个模块并让它们自动解析。【参考方案3】:

我在 settings > compiler > java compiler 中找到了必需的选项('目标字节码版本')(intelij idea 12.1.3)

【讨论】:

【参考方案4】:

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

IntelliJ 12 129.961

【讨论】:

此处与 IntelliJ 14.1.2 相同。重新导入项目并修复。【参考方案5】:

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

【讨论】:

【参考方案6】:

您是否查看过您的构建配置,如果您使用 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>

【讨论】:

【参考方案7】:

IntelliJ 15、2016 和 2017

与下面讨论的 IntelliJ 13 和 14 类似,但在设置/首选项面板中有一个额外的级别:设置 > 构建、执行、部署 > 编译器 > Java编译器.

IntelliJ 13 和 14

在 IntelliJ 13 和 14 中,检查 Settings > Compiler > Java Compiler UI 以确保您的模块中没有针对不同的字节码版本。

【讨论】:

我不得不删除我的模块并让它自动解析(jdk 默认留空) 适用于最新的 Idea14.1 那么这里的解决方法是什么? @AlikElzin-kilaka,将目标级别设置为您需要的任何级别。 有人能解释一下为什么他们会将特定的模块设置放在全局首选项配置屏幕中,而不是放在模块设置中吗??【参考方案8】:

我解决了下面的方法

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

【讨论】:

【参考方案9】:

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

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

比 IntelliJ 使用 JDK 默认版本。

【讨论】:

【参考方案10】:

在从 IntelliJ IDEA 14 小幅升级到 v14.1 之后,我就遇到了这个问题。 对我来说,更改顶部/父 pom 的编辑有帮助,然后单击重新导入 Maven(如果它不是自动的)。

但是右键单击模块/聚合/父模块和 Maven -> 重新导入可能就足够了。

【讨论】:

这对我有用!我是为我的***模块和我的子模块做的【参考方案11】:

IntelliJ IDEA 14.1 中,“目标字节码版本”位于不同的位置。

以下更改对我有用:

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

【讨论】:

或者最好留空,到时候可以从jdk中确定! 为什么和maven的配置不一样?【参考方案12】:

修改项目的编译器设置文件如下路径,将'target'改为1.7:

/project/.idea/compiler.xml

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

【讨论】:

感谢这对我有用!不要忘记通过右键单击项目来执行“Make Module '[your app name]'”【参考方案13】:

如果是 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 配置。

【讨论】:

【参考方案14】:

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

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

【讨论】:

【参考方案15】:

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

选择您的项目并导航到依赖项选项卡。从下拉列表中选择正确的依赖关系或创建新的。

【讨论】:

【参考方案16】:

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

在Maven tool window,点击刷新按钮。按下此按钮后,IntelliJ IDEA 会在 Maven 工具窗口中解析项目结构。

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

【讨论】:

【参考方案17】:

如果之前的所有解决方案都不适合您(我的情况就是这样),您可以删除 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 配置(即:调试模式的配置,...)

【讨论】:

我有一个案例,这也没有帮助。但是因为我知道构建在 CLI 中运行良好,所以我知道问题必须在 IDEA 中的某个地方。 JDK 版本/级别设置为 17everywhere。最后简单地使用“File / Invalidate Caches ...”解决了这个问题。我只是不知道是否还需要删除项目的“.idea/”。【参考方案18】:

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

【讨论】:

以上是关于IDEA:javac:源版本 1.7 需要目标版本 1.7的主要内容,如果未能解决你的问题,请参考以下文章

java版本和javac版本不一致

IntelliJ Idea编译报错:无效的源发行版 1.7

javac与java版本不一致

升级到Java8后,javac仍然显示1.7

Ant 构建失败,“[javac] javac:无效的目标版本:7”

centos 6 添加svn 的1.7版本yum源