powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Закрытие ресурсов
4 сообщений из 4, страница 1 из 1
Закрытие ресурсов
    #38900658
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
try-with-resources для не Closeable, я так понимаю это невозможно. Но как же поступать с ресурсами, которые Closeable не реализуют? Например java.util.logging.FileHandler
Его чтоль нужно самому как-то так расширить?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class FileHandlerCloseable extends FileHandler implements Closeable
{
    FileHandlerCloseable() throws IOException
    {
        super();
    }

    public FileHandlerCloseable(String string, int i, int i0, boolean b) throws IOException
    {
        super(string, i, i0, b);
    }
}


Метод close там итак есть, просто интерфейс не реализован. А что если например я совсем в другом методе эту переменную инициализирую, как её закрыть при завершении, с помошью Google Guava что-ли?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
Closer closer = Closer.create();
try {
   OutputStream stream = closer.register(openOutputStream());
   // что-то делаем со stream
} catch (Throwable e) { // ловим абсолютно все исключения (и даже Error'ы)
   throw closer.rethrow(e);
} finally {
   closer.close();
}
...
Рейтинг: 0 / 0
Закрытие ресурсов
    #38900679
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем сделал с использованием вышеописанного FileHandlerCloseable , и поменял немножко архитектуру приложения. Пусть в try-with-resources закрывается, хоть и не очень нравится мне то что получилось, но похоже это лучшее решение из возможных.
...
Рейтинг: 0 / 0
Закрытие ресурсов
    #38900680
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLoА что если например я совсем в другом методе эту переменную инициализирую, как её закрыть при завершении, с помошью Google Guava что-ли?

Да сам напиши обёртку- делов-то...

Код: sql
1.
2.
3.
4.
5.
6.
public class FileHandlerCloser implements AutoCloseable
{
    public final FileHandler resource;
    public Closer(FileHandler resource) { this.resource = resource; }
    public void close() {resource.close();}
}
...
Рейтинг: 0 / 0
Закрытие ресурсов
    #38902155
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм, я так понимаю оно само должно закрываться, просто у меня версия JDK8 глючная. Причём баг древний очень.
https://bugs.openjdk.java.net/browse/JDK-6774110
авторFULL PRODUCT VERSION :
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]

A DESCRIPTION OF THE PROBLEM :
A logger (with name "com.foo.testing") is defined in the logging properties file. The child logger (with name "com.foo.testing.logging.Logging3") is used inside the source.

During execution, there are 4 files (log, log.lck, log.1 and log.lck), but after the program exits, just log.lck is removed.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. define a logger in logging properties
2. use Logger.getLogger to get a child logger
3. the unwanted lock file remained
автор
Created:
2008-11-20 02:09

Updated:
2014-10-10 07:13

Resolved:
2014-10-09 07:03

Imported:
16/Sep/12 10:48 AM

Indexed:
18/Jul/12 5:49 AM


А решён только недавно. А я год назад обновлялся. Причём сейчас не получается обновиться, похоже прокси с ума сходит.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Закрытие ресурсов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]