当前位置: 首页 > 知识库问答 >
问题:

Java资源泄漏未关闭[重复]

左丘修齐
2023-03-14

我正在编写一个程序,希望控制台输出用户输入的数字的剩余部分。但是,每次我编译代码时,控制台都会打印出来,我得到以下控制台错误:

 1 problem (1 warning)
 Compiler is using classPath = '[C:\Users\Darien Springer\Documents\Java,   C:\Users\Darien Springer\Desktop\drjava-beta-20160913-225446.exe]';  bootClassPath = 'null'
 ----------
 1. WARNING in C:\Users\Darien Springer\Documents\Java\PrintDigits.java (at   line 5)
     Scanner scnr= new Scanner(System.in); 
        ^^^^
 Resource leak: 'scnr' is never closed
 ----------
 1 problem (1 warning)

我不确定控制台所说的“资源泄漏”是什么意思。我在几个不同的地方查找过它(包括API和其他堆栈溢出问题),我不确定为什么没有打印到控制台。我正在使用DrJava程序,以防有人想知道。

这里是我的代码供参考:

import java.util.Scanner;

  public class PrintDigits {
    public static void main(String [] args) {
       Scanner scnr= new Scanner(System.in);
       int userInput = 0;
       int positiveInt = 0;

    System.out.println("enter a positive integer:");
    userInput = scnr.nextInt();

    positiveInt = userInput % 10;
    System.out.println(positiveInt);


 return;
 }
}

共有1个答案

卫鸿朗
2023-03-14

这个警告只是说你永远不会在代码中的任何地方调用scnr.close();。要让它消失,只需在使用扫描仪完成后调用scnr.close();

import java.util.Scanner;

public class PrintDigits {
public static void main(String [] args) {
   Scanner scnr= new Scanner(System.in);
   int userInput = 0;
   int positiveInt = 0;

    System.out.println("enter a positive integer:");
    userInput = scnr.nextInt();

    positiveInt = userInput % 10;
    System.out.println(positiveInt);

    scnr.close();
    return;
    }
}
 类似资料:
  • 我正在使用Eclipse,并执行下面的函数,碰巧我打开了一个扫描器,然后,最后我关闭了它,但Eclipse一直说它没有关闭“资源泄漏:'Scanner'没有关闭”。我可以用try with resources来完成,警告消失了,但我想知道为什么我在这里尝试的方式不起作用

  • 为什么Eclipse在下面的代码中给了我变暖的“资源泄漏:'in'从不关闭”?

  • 此代码导致资源泄漏: conin从未关闭 为什么会发生这种情况?我如何修复它?

  • 当我创建扫描仪时,似乎出现了这个错误。我试图通过搜索错误名称来解决这个问题,但到目前为止未能成功地让消息停止出现。 代码: 我得到错误的部分:

  • 问题内容: 在spring MVC应用程序中,我使用以下方法在服务类之一中初始化变量: UserLibrary是我在应用程序中使用的第三方工具。上面的代码为’context’变量生成警告。该警告如下所示: 我不明白警告。由于该应用程序是Spring MVC应用程序,因此在运行该应用程序时,我无法真正关闭/销毁上下文,因为我引用该服务。警告到底想告诉我什么? 问题答案: 由于应用程序上下文是一个(i

  • 资源泄漏:“扫描”永远不会关闭。 因此,我在代码末尾添加了来处理警告。 出现这个问题是因为我在同一个包中有其他类也使用scanner对象,而Eclipse告诉我分别关闭这些类中的scanner。然而,当我这样做时,它似乎关闭了所有的扫描器对象,并在运行时得到错误。 我遇到的一篇文章提到,当关闭时,我不能重新打开。如果是这种情况,我是否只需要确保一个带有System.in的扫描器对象在程序末尾关闭,