Я запускаю простое приложение Java (только конечная точка REST, ответ «Hello» - в точности пример, созданный архетипом Quarkus maven, без изменений) со следующим стеком:
- Quarkus (Микропрофиль)
- JDK 1.8 HotSpot 1.8.0_231-b11
- GraalVM 19.3.0 (собственный образ)
- MacOS Catalina
Это первая ошибка (хотя это не кажется основной проблемой):
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] setup: 8,524.65 ms
java.lang.NoSuchMethodException: com.oracle.svm.core.jdk.LocalizationSupport.addBundleToCache(java.lang.String)
at java.lang.Class.getDeclaredMethod(Class.java:2130)
at io.quarkus.runner.AutoFeature.beforeAnalysis(AutoFeature.zig:744)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$7(NativeImageGenerator.java:669)
at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:63)
at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:669)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:530)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:445)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
20:17:42,508 INFO [org.jbo.threads] JBoss Threads version 3.0.0.Final
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] (typeflow): 34,257.18 ms
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] (objects): 19,361.86 ms
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] (features): 866.06 ms
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] analysis: 56,364.44 ms
Настоящая проблема (я думаю) здесь:
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of java.net.Inet4Address are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use -H:+TraceClassInitialization.
Detailed message:
Trace:
at parsing org.wildfly.common.net.CidrAddress.<clinit>(CidrAddress.java:46)
Call path from entry point to org.wildfly.common.net.CidrAddress.<clinit>():
no path found from entry point to target method
Итак, первое, что я попытался сделать, это указать, что класс org.wildfly.common.net.CidrAddress не инициализируется в Image BuildTime, а инициализируется в Image RunTime с конфигурацией:
quarkus.native.additional-build-args=--initialize-at-run-time=org.wildfly.common.net.CidrAddress
quarkus.native.enable-jni=true
Но ничего не меняется. Я также попытался активировать (в соответствии с инструкциями) параметр -H: + TraceClassInitialization, чтобы узнать, какой класс инициализируется, что может вызвать проблему. Нет эффекта! Это не имеет значения для этого параметра (без дополнительной информации).
Кто-то еще прошел через этот сценарий? Есть подсказки, идеи?
Спасибо!