Java“资源泄漏”警告不应该触发

时间:2016-11-03 16:38:29

标签: java resource-leak autocloseable java-annotations

我有一个名为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永远不会关闭?来自here的答案说,触发它所需要的只是实现接口Closeable,但是我的类实现了CloseableAutocloseable但不会触发任何警告未封闭的。

1 个答案:

答案 0 :(得分:0)

如果您正在使用Eclipse(与链接问题相关),则可以选择在可能存在资源泄漏的情况下显示警告。

转到窗口> 偏好设置> Java > 编译器> 错误/警告,并将“潜在资源泄漏”的严重性级别设置为警告