У меня есть класс под названием 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
, но не вызывает никаких предупреждений при закрытии.
У меня такая же проблема. Проблема возникает, когда экземпляр ресурса возвращается методом вместо нового. К сожалению, для этого нет решения. –