Я создаю собственный образ GraalVM, выполнив:
./mvnw package -Pnative
Это выдает ошибку:
Error: Detected a started Thread in the image heap. Threads running in the image generator are no longer running at image run time. To see how this object got instantiated use -H:+TraceClassInitialization. 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-build-time=<class-name>.
Я вижу команду native-image
, которую он пытался запустить :
/Library/Java/JavaVirtualMachines/graalvm-ce-java8-19.3.1/Contents/Home/bin/native-image -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dvertx.logger-delegate-factory-class-name=io.quarkus.vertx.core.runtime.VertxLogDelegateFactory -J-Dvertx.disableDnsResolver=true -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=1 --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar get-started-1.0-SNAPSHOT-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:-AddAllCharsets -H:EnableURLProtocols=http -H:+JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace get-started-1.0-SNAPSHOT-runner
, поэтому я думаю, что могу добавить ошибку -H:+TraceClassInitialization
, но когда я запускаю native-image
с или без опции трассировки, я получаю другую ошибку:
[get-started-1.0-SNAPSHOT-runner:52581] classlist: 7,548.63 ms
[get-started-1.0-SNAPSHOT-runner:52581] setup: 55.85 ms
Error: policy com.oracle.svm.core.genscavenge.CollectionPolicy cannot be instantiated.
com.oracle.svm.core.util.UserError$UserException: policy com.oracle.svm.core.genscavenge.CollectionPolicy cannot be instantiated.
Я не уверен, что это связано Я предполагаю, что запуск через maven устанавливает некоторый контекст, и мне интересно, есть ли свойство в файле pom.xml
, которое я могу задать для запроса -H:+TraceClassInitialization