2016-11-03 19 views
1

У меня есть класс под названием 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 (связанный с ним вопрос), есть возможность отображать предупреждение, где есть возможность утечки ресурса.

Перейти к Окно>Preferences>Java>Компилятор>Ошибки/предупреждения и установить уровень серьезности "потенциальной утечки ресурсов" на Предупреждение.

+0

У меня уже включен этот параметр. –

 Смежные вопросы

  • Нет связанных вопросов^_^