Есть ли опция pom. xml для H: + TraceClassInitialization при создании исполняемого файла graalvm? - PullRequest
0 голосов
/ 17 февраля 2020

Я создаю собственный образ 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

1 Ответ

0 голосов
/ 18 февраля 2020

В конце концов узнал как. Дополнительные аргументы сборки добавляются в качестве свойств. например.

  <properties>
    <quarkus.package.type>native</quarkus.package.type>
    <quarkus.native.additional-build-args>-H:+TraceClassInitialization</quarkus.native.additional-build-args>
  </properties>

или в application.properties в src/resources

quarkus.native.additional-build-args=-H:+TraceClassInitialization

Теперь я могу решить, какой класс необходимо предварительно инициализировать. У меня проблемы с установкой --initialize-at-build-time=, так как он уже присутствует с пустым списком. Вернуться к документации. Если я ничего не смогу найти, я задам свободный вопрос sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...