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

Java VSCode中Scanner资源泄漏警告的解决方法咨询

解决Java中「Resource leak: 'sc' is never closed」警告

这个警告是因为你创建的Scanner对象sc没有被关闭,属于资源未释放的提示。虽然程序能正常运行,但遵循资源管理规范能避免潜在问题,以下几种方法可以解决:

  • 手动关闭Scanner
    在使用完Scanner的代码之后,调用sc.close()方法释放资源。修改后的代码如下:

    import java.util.*;
    public class takingInput{
        public static void main(String args[]){
            Scanner sc = new Scanner(System.in);
    
            float price = sc.nextFloat();
            System.out.println(price);
    
            // 使用完毕后关闭Scanner
            sc.close();
        }
    }
    
  • 使用try-with-resources自动关闭(推荐)
    Java 7及以上支持try-with-resources语法,它会在代码块执行完毕后自动关闭实现了AutoCloseable接口的资源(Scanner正好符合),无需手动调用close。代码示例:

    import java.util.*;
    public class takingInput{
        public static void main(String args[]){
            // 将Scanner声明在try的括号内
            try(Scanner sc = new Scanner(System.in)){
                float price = sc.nextFloat();
                System.out.println(price);
            } // 这里会自动关闭sc
        }
    }
    

    这种方式更安全,就算代码块中抛出异常,资源也会被正确关闭。

  • 临时关闭VS Code中的该警告(不推荐)
    如果只是想暂时屏蔽警告而不修改代码,可以在VS Code的设置中调整:

    1. 打开设置(快捷键Ctrl+,)
    2. 搜索java.diagnostics,找到Java > Diagnostics: Enabled对应的规则列表
    3. 找到resource-leak相关的规则,将其禁用
      不过不建议这么做,因为资源泄漏是需要重视的代码规范问题,长期来看规范代码更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 23:24:54