我有一个名为JavaShellStream
的类,它扩展了接口Closeable
和Autocloseable
。但是,当我使用该类时,不调用其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
,但是我的类实现了Closeable
和Autocloseable
但不会触发任何警告未封闭的。
答案 0 :(得分:0)
如果您正在使用Eclipse(与链接问题相关),则可以选择在可能存在资源泄漏的情况下显示警告。
转到窗口> 偏好设置> Java > 编译器> 错误/警告,并将“潜在资源泄漏”的严重性级别设置为警告。