【发布时间】:2019-12-19 16:03:13
【问题描述】:
我有一个由 Quarkus 添加到构建时间初始化的第 3 方类,但由于使用静态线程,它需要运行时初始化。当将它添加到运行时初始化本机构建时,会抱怨它在两者中。
重现此内容的示例项目:https://github.com/hshorter/quarkus-avro-decode-example
使用“--initialize-at-run-time=org.apache.avro.specific.SpecificDatumReader”:
错误:应该在运行时初始化的类被初始化了 在图像构建期间:org.apache.avro.specific.SpecificDatumReader 该类被要求在构建时初始化(从 命令行)。看看为什么 org.apache.avro.specific.SpecificDatumReader 被初始化使用 -H:+TraceClass初始化
没有“--initialize-at-run-time=org.apache.avro.specific.SpecificDatumReader”:
错误:在图像堆中检测到一个已启动的线程。运行的线程 图像生成器不再在图像运行时运行。查看 这个对象是如何被实例化的,使用 -H:+TraceClassInitialization。这 对象可能是由类初始化程序创建的并且是可访问的 从静态场。您可以在图像运行时请求类初始化 使用选项 --initialize-at-build-time= 来计时。或者 您可以编写自己的初始化方法并显式调用它们 从您的主要入口点。详细信息:跟踪:对象 org.apache.avro.specific.SpecificDatumReader
非常感谢任何帮助。
【问题讨论】:
标签: java quarkus graalvm-native-image