You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ修改Java11后javap仍显示版本62,求助降级项目SDK

解决IntelliJ中Java SDK降级不生效的问题

问题背景

已在File -> Project Structure -> Projects中设置SDK和语言级别为Java 11,但执行javap -v命令查看编译后的字节码,主版本号仍为62(对应Java 18)。使用环境:Fedora 37系统,IntelliJ IDEA 2022.1.1版本。

设置截图说明:

  • 截图1:Project Structure的Projects页面,已配置Project SDK为openjdk-11,Language level为SDK default (11 - Local variable syntax for lambda parameters)
  • 截图2:Project Structure的Modules页面,Dependencies标签下Module SDK为openjdk-11

解决步骤

1. 检查模块级别的语言级别设置

进入File -> Project Structure -> Modules,选中对应模块后切换到Sources标签页,确认Language Level设置为Java 11(需与Project级别保持一致)。

2. 配置Java编译器目标版本

打开File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler,找到对应模块的Target bytecode version,手动设置为11。

注意:如果项目使用Maven/Gradle等构建工具,此处设置可能会被构建脚本覆盖,需同步修改构建配置。

3. 修改构建工具配置(Maven/Gradle)

Maven项目

在pom.xml中添加或更新编译版本配置:

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

执行mvn clean install命令清理并重新构建项目。

Gradle项目

在build.gradle(Groovy)中设置:

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

或build.gradle.kts(Kotlin)中设置:

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

执行gradle clean build命令清理并重新构建项目。

4. 清理缓存与旧编译产物

  • 删除项目目录下的target(Maven)或build(Gradle)文件夹,彻底清除旧的编译字节码。
  • 执行File -> Invalidate Caches...,选择Invalidate and Restart,重启IntelliJ以清除IDE缓存。

5. 检查系统默认JDK(可选)

执行以下命令确认系统默认JDK版本:

echo $JAVA_HOME
java -version

若系统默认JDK为Java 18,且构建工具未指定项目SDK,可能会导致编译版本不符。此时可修改JAVA_HOME指向Java 11,或在构建工具配置中明确指定JDK路径。

内容的提问来源于stack exchange,提问作者WinterMute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:39:15