Size: a a a

2020 June 24

I

Igor in graalvm_ru
источник

λ

λoλdog in graalvm_ru
Ну ок
источник

λ

λoλdog in graalvm_ru
попробуй прост другую имплементацию
источник

I

Igor in graalvm_ru
λoλdog
попробуй прост другую имплементацию
источник

I

Igor in graalvm_ru
аналогично, пришлось еще один класс в reflect-config добавить только
источник

λ

λoλdog in graalvm_ru
ок
источник

λ

λoλdog in graalvm_ru
а как создаешь refrect-config
источник

I

Igor in graalvm_ru
java -agentlib:native-image-agent=config-merge-dir=./reflection-info -jar ./target/jaxb.jar
источник

OS

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

OS

Oleg Shelajev in graalvm_ru
у тебя джава 11 или 8?
источник

λ

λoλdog in graalvm_ru
Судя по аутпуту 11
источник

I

Igor in graalvm_ru
магия, работает
причем видел этот тикет, но не обратил внимания на коммент

спасибо!
источник

OS

Oleg Shelajev in graalvm_ru
надо конечно в доки записать
источник

IL

Igor Lukyanov in graalvm_ru
а подскажите плиз, если в чужой либе в одном из часто используемых классов одно из статик полей содержит bytebuffer - единственный способ сбилдить - это исправить либу?
источник

IL

Igor Lukyanov in graalvm_ru
то бишь можно попробовать пометить --initialize-at-run-time, но если класс по-любому должен инициализироваться в процессе запуска приложения - это не вариант вроде как
источник

OS

Oleg Shelajev in graalvm_ru
А чем байтбаффер плох? Он инициализируется?
источник

IL

Igor Lukyanov in graalvm_ru
У нетти инициализация кеша буферов в статик блоке, соотв. лезет ошибка

Error: Detected a direct/mapped ByteBuffer in the image heap. A direct ByteBuffer has a pointer to unmanaged C memory, and C memory from the image generator is not available at image run time.A mapped ByteBuffer references a file descriptor, which is no longer open and mapped at run time.   Object has been initialized without the native-image initialization instrumentation and the stack trace can't be tracked. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image run time by using the option --initialize-at-run-time=<class-name>. Or you can write your own initialization methods and call them explicitly from your main entry point.
источник

IL

Igor Lukyanov in graalvm_ru
но при этом избежать инициализации этого пула невозможно, т.к. он юзается примерно везде
источник

IL

Igor Lukyanov in graalvm_ru
то бишь если ввернуть --initialize-at-run-time=io.netty.buffer.PooledByteBufAllocator - оно будет ругаться что класс инициализируется в билд тайме
источник

IL

Igor Lukyanov in graalvm_ru
причем странно что в восьмерке этой ошибки не было, как будто бы
источник