NCALayer 1.4 не работает на macOS 15 Sequoia — окно выбора ключа не открывается (NullPointerException в JavaFX)
Описание проблемы:
При попытке подписать документ на сайте (knp.kgd.gov.kz) WebSocket-соединение устанавливается успешно (статус 101), NCALayer получает запрос method: sign, отвечает версией {"result":{"version":"1.4"}}, но окно выбора ключа/сертификата не появляется. В ответ приходит ошибка:
{"code":"SIGNING_FAILURE","details":"java.util.concurrent.ExecutionException: java.lang.NullPointerException","message":"Signing has failed.","status":false}
Окружение:
- macOS 15 Sequoia (версия ядра: Darwin 26.x)
- NCALayer 1.4.0 (последняя доступная версия с сайта pki.gov.kz)
- Safari 26.2
- Mac (Apple Silicon / Intel)
Диагностика из логов (~/Library/Application Support/NCALayer/ncalayer.log):
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.javafx.font.MacFontFinder.populateFontFileNameMap(MacFontFinder.java:89)
at com.sun.javafx.font.PrismFontFactory.getFullNameToFileMap(PrismFontFactory.java:1705)
at com.sun.javafx.font.PrismFontFactory.getFontResource(PrismFontFactory.java:667)
at com.sun.javafx.font.PrismFontLoader.loadFont(PrismFontLoader.java:206)
at javafx.scene.text.Font.<init>(Font.java:319)
at kz.gov.pki.api.layer.fx.dialog.BundleListDialog.getModuleListStage(BundleListDialog.java:329)
Причина:
NCALayer использует JavaFX 8 (bundled Java 8), которая не совместима с macOS 15. Метод MacFontFinder.populateFontFileNameMap падает с NPE при попытке получить список системных шрифтов через macOS API, которое изменилось в новых версиях системы. Из-за этого JavaFX Application Thread крашится и окно выбора ключа никогда не отображается.
Дополнительно в логах видны предупреждения об истёкших сертификатах внутренних OSGi-бандлов:
CertificateExpiredException: NotAfter: Sat Dec 14 04:59:59 ALMT 2024
CertificateExpiredException: NotAfter: Tue Jun 13 23:48:59 ALMT 2023
Попытки обходного решения:
Запуск с флагом -Dprism.text=t2k частично помогает (убирает один из крашей), но NPE в MacFontFinder при загрузке кастомного шрифта из jar-а всё равно происходит.
Запрос:
Просьба обновить версию JavaFX в составе NCALayer до JavaFX 17 LTS или JavaFX 21 LTS, которые имеют нативную поддержку macOS 15 и исправленный MacFontFinder. Это устранит проблему для всех пользователей Mac с macOS 15+.
Временный обходной путь (для других пользователей с той же проблемой):
Пока фикс не выпущен — проблема не решается на стороне пользователя. NCALayer 1.4.0 не работает на macOS 15 Sequoia.