资源泄漏:“扫描”永远不会关闭。
因此,我在代码末尾添加了scan.close();
来处理警告。
出现这个问题是因为我在同一个包中有其他类也使用scanner对象,而Eclipse告诉我分别关闭这些类中的scanner。然而,当我这样做时,它似乎关闭了所有的扫描器对象,并在运行时得到错误。
import java.util.Scanner;
public class test2 {
public static void main(String [] args) {
Scanner scan = new Scanner(System.in);
int test = 0;
do {
//Do stuff
test = scan.nextInt();
System.out.println(test);
scanTest scanTest = new scanTest();
scanTest.test();
} while (test != 0);
scan.close();
}
}
import java.util.Scanner;
public class scanTest {
public void test() {
Scanner scanner = new Scanner(System.in);
int blah = scanner.nextInt();
System.out.println(blah);
scanner.close();
}
}
我遇到的一篇文章提到,当system.in
关闭时,我不能重新打开。如果是这种情况,我是否只需要确保一个带有System.in的扫描器对象在程序末尾关闭,并@抑制其他类中的所有其他扫描器警告?或者这仍然会让所有扫描仪对象打开(不好)?
首先,这不是内存泄漏。
其次,当关闭流包装器时,默认的实现是让它关闭它包装的流。这意味着当您第一次关闭扫描仪时(按照它所写的那样),是的,您关闭了System.In。
一般来说,如果要再次从System.In中读取,则希望避免关闭System.In。最好的方法取决于你的程序。
大家好,我的程序员们。 我有一些代码,spring工具套件编辑器的反应也不一样,也许你们一些聪明人知道为什么。 有人能告诉我为什么这是不可能的吗: 但这是!? 第一行代码给了我一个警告“Resource leak:unassigned closeable value is never close”,正如您所看到的,我在try/catch中使用了一个finally,如果对象不为空,它应该总是关闭对象
我正在使用Eclipse,并执行下面的函数,碰巧我打开了一个扫描器,然后,最后我关闭了它,但Eclipse一直说它没有关闭“资源泄漏:'Scanner'没有关闭”。我可以用try with resources来完成,警告消失了,但我想知道为什么我在这里尝试的方式不起作用
我正在读取一个文件并将其内容存储在字符串中。代码给了我一个警告:Resource leak:。我如何解决它?
我正在编写一个程序,希望控制台输出用户输入的数字的剩余部分。但是,每次我编译代码时,控制台都会打印出来,我得到以下控制台错误: 我不确定控制台所说的“资源泄漏”是什么意思。我在几个不同的地方查找过它(包括API和其他堆栈溢出问题),我不确定为什么没有打印到控制台。我正在使用DrJava程序,以防有人想知道。 这里是我的代码供参考:
为什么Eclipse在下面的代码中给了我变暖的“资源泄漏:'in'从不关闭”?