Size: a a a

2020 May 29

λ

λoλdog in graalvm_ru
но ниче не работает
источник

OS

Oleg Shelajev in graalvm_ru
а второй — про то что надо статический инициализатор запустить во время старта
источник

OS

Oleg Shelajev in graalvm_ru
когда у тебя 2 класса — А и Б. И clinit A делает что-то что инициализирует B
источник

OS

Oleg Shelajev in graalvm_ru
даже если это рефлекшн
источник

OS

Oleg Shelajev in graalvm_ru
то Б будет потроган во время инициализации А
источник

λ

λoλdog in graalvm_ru
а если у тебя класс А в билд тайме инициализируется
источник

λ

λoλdog in graalvm_ru
класс Б в рантаиме
источник

λ

λoλdog in graalvm_ru
и класс А дергает класс Б
источник

λ

λoλdog in graalvm_ru
то что будет
источник

OS

Oleg Shelajev in graalvm_ru
не знаю :) это надо прочитать в блогпосте который ты хотел чтобы я написал выще :)
источник

OS

Oleg Shelajev in graalvm_ru
не соберется на самом деле
источник

OS

Oleg Shelajev in graalvm_ru
вот и все
источник

λ

λoλdog in graalvm_ru
ну а как тогда делать?
источник

OS

Oleg Shelajev in graalvm_ru
инициализировать А в рантайме
источник

OS

Oleg Shelajev in graalvm_ru
или сделать так чтобы B инициализировался не из clinit'a
источник

λ

λoλdog in graalvm_ru
ну это приведет к тому, что все твое приложение нужно будет инициализировать в рантайме
источник

OS

Oleg Shelajev in graalvm_ru
а например из инит
источник

OS

Oleg Shelajev in graalvm_ru
ну если у тебя все приложение инициализируется через статический инициализаторы то да
источник

OS

Oleg Shelajev in graalvm_ru
но это не факт
источник

λ

λoλdog in graalvm_ru
ну вот тебе пример логинг
источник