Порядок инициализации модулей. Round 2
Опишите ошибку Понятное описание того, что происходит
Вернулась ошибка с неверным порядком инициализации модулей.
Приводит к ошибке установки пакетов через opm, т.к. в НастройкиOPM при обращении к КонстантыOPM вместо адреса основного сервера пакетов возвращается Неопределено.
Воспроизведение ошибки
Вариант через докер (нативный, на линуксе, в docker for windows чаще всего работает):
- Берем докер файл https://github.com/firstBitSemenovskaya/onec-docker/blob/631563b4b89166792861d61fa2bc643f0ce6311f/base-jenkins-agent/Dockerfile
- меняем from на debian:stretch-slim
- меняем аргумент ONESCRIPT_VERSION на 1.3.0 или передаем его из cli
-
docker build --build-arg ONESCRIPT_VERSION=1.3.0 . - ловим ошибку
Без докера (в теории)
- ставим mono 6.8.0.105
- ставим движок 1.3.0
-
opm install opm
Проблема воспроизводится на opm 0.16.1. Если использовать opm 0.16.2, то проблема не воспроизводится, т.к. там реализована отложенная инициализация настроек OPM
Надо попытаться сделать инициализацию через зависимые обращения из тела модуля к другим модулям Например, если инициализировать гл. свойства-модули не в Неопределено, а в некий лоадер, который при обращении запустит инициализацию запрошенного модуля и вернет вместо себя.
@nixel2007 если в яве сделать статик инициализатор типа, а из него вызвать тип тоже со статик инициализатором, вызывающим первый, что будет?
Уже нашел ответ https://stackoverflow.com/questions/30142611/recursive-initialization-static-initializer-not-getting-called-when-i-access-c
Второй вызов получит недоинициализированный тип. Инстанс класса существует, но статик блок еще не доработал до конца.