Java "Resource Leak"警告在应该触发时不触发



我有一个名为JavaShellStream的类,它扩展了CloseableAutocloseable接口。但是,当我使用该类时,如果不调用它的close()方法,则不会触发存在资源泄漏的警告。我有另一个叫做JavaShell的类,它有一个叫做exec(String cmd)的方法,返回一个JavaShellStream对象。当我以以下方式创建一个新的JavaShellStream对象时,没有触发资源泄漏警告:

//workingDir is a File object that sets the working directory
JavaShell js = new JavaShell(workingDir); 
//execute the "ls" command and retrieve output as a JavaShellStream
JavaShellStream jss = js.exec("ls");
/*
 * some code to read the text from the stream
 * but DOES NOT close the stream
 */
// Note that I am NOT calling the close() method

为什么没有警告触发这里有一个资源泄漏,因为JavaShellStream jss从来没有关闭?这里的答案说触发它所需要的是实现接口Closeable,但我的类实现了CloseableAutocloseable,但在打开时不会触发任何警告。

如果您正在使用Eclipse(正如链接的问题所涉及的),则有一个选项可以在可能发生资源泄漏的地方显示警告。

打开Window>>>>Java>CompilerErrors/Warnings,设置"Potential resource leak"的严重级别为Warning

相关内容

  • 没有找到相关文章

最新更新