WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: ..... сreate failed.
Опубликовано Наталья Мовчан on 2020-07-20 10:16

В стандартном классе java.util.prefs.FileSystemPreferences, предназначенном для работы с настройками в Unix, имеется следующая особенность реализации.

В данном классе по умолчанию запускается таймер, осуществляющий синхронизацию закэшированных системных и пользовательских настроек. При этом стандартным таймаутом для синхронизации является значение 30 секунд (за это значение отвечает параметр java.util.prefs.syncInterval).
Из-за этого при работе с КриптоПро JCP в режиме пользователя на UNIX-платформах с периодичностью в 30 секунд выводится предупреждение "WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: ..... сreate failed." (поскольку функция синхронизации класса FileSystemPreferences в режиме пользователя не может получить доступ к системным настройкам).
Для того, чтобы данная синхронизация в режиме пользователя не проводилась и, как следствие, не выводилось предупреждение об ошибке, необходимо установить значение параметра java.util.prefs.syncInterval равным большому числу. Например, 9999.

Параметр можно установить одним из следующих способов:
1) при запуске в командной строке передать параметр с помощью -D:

java.exe ... -Djava.util.prefs.syncInterval=9999 ...

2) напрямую задать значение параметра в java-коде:

System.setProperty("java.util.prefs.syncInterval", "9999");

 

Приведенная ниже особенность актуальна только для JRE 1.7-1.8 . Для JRE 10 и выше данной проблемы нет, поскольку в этом случае КриптоПро JCP использует только пользовательские настройки.

(9 плюсик(ов))
Класс!
Не очень :(