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

IntelliJ 2018.1中JDK10局部变量类型推断(var)无法识别问题

解决IntelliJ IDEA 2018.1中JDK10 var关键字无法编译的问题

首先看一下你提供的代码:

public class Variations { 
    public static void main(String[] args) { 
        var local = "foo"; 
        System.out.println(local); 
    } 
}

这段代码本身没有语法问题,问题大概率出在IntelliJ的配置细节上。我之前用同版本IDEA和JDK10时也碰到过一模一样的情况,给你列几个必查的排查方向:

  • 确认模块的语言级别完全同步:
    有时候项目级的语言级别设成10了,但模块没跟上。操作路径:File → Project Structure → Modules,选中你的模块后切到Sources标签,把Language level改成10 - Local variable type inference。别依赖“Project default”,直接选10更稳妥,避免项目默认配置未生效的情况。

  • 检查模块的字节码编译版本:
    同样在Project Structure → Modules里,切到Compiler标签,把Bytecode version设为10,或者勾选Use project bytecode version确保和项目配置一致。字节码版本不匹配的话,编译器会直接不认新语法特性。

  • 验证全局Java编译器设置:
    打开File → Settings → Build, Execution, Deployment → Compiler → Java Compiler,找到你的项目模块,把Target bytecode version改成10。这里很容易被忽略,因为默认可能继承了旧版本的配置。

  • 清理IDEA缓存并重启:
    IntelliJ的缓存有时候会抽风,导致配置不生效。直接点File → Invalidate Caches / Restart,选择Invalidate and Restart,等重启完再编译试试,这个操作解决过我很多奇奇怪怪的编译问题。

  • 如果是Maven/Gradle项目,检查构建工具配置:
    如果你用Maven,一定要确保pom.xml里的maven-compiler-plugin设置了正确的source和target版本——Maven的配置会直接覆盖IntelliJ的项目设置:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>10</source>
                    <target>10</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    Gradle项目则要在build.gradle里设置:

    sourceCompatibility = 10
    targetCompatibility = 10
    
  • 最后再确认JDK配置:
    去File → Project Structure → SDKs,检查你添加的JDK10路径是否正确,有没有不小心选成JDK8或者其他版本。有时候IDEA会自动识别旧JDK,导致配置串了。

按上面的步骤挨个排查,应该就能解决问题了!

内容的提问来源于stack exchange,提问作者Zalán Meggyesi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:20:01