Quarkus 原生构建问题:通过 ServiceLoader 找不到 NameResolverProviders

问题描述 投票:0回答:0

我有一个经过充分测试的 Quarkus 微服务,我正在尝试以本机模式构建它。我正在使用最新的 Quarkus 3.2.2.Final。 JVM 模式下不存在问题。

当我启动本机微服务时,在启动过程中我收到警告:

"io.grpc.NameResolverRegistry","level":"WARNING","message":"No NameResolverProviders found via ServiceLoader, including for DNS. This is probably due to a broken build. If using ProGuard, check your configuration"

当然,此后,与 etcd 的通信失败并显示

cannot find a NameResolver for ip:///localhost:2379
,并且应用程序退出。

在 JVM DEBUG 模式下,我可以看到总共注册了 7 个解析器。

我尝试显式注册反射类,但没有帮助。

@RegisterForReflection(targets={
    IPNameResolver.class,
    HttpNameResolver.class,
    HttpResolverProvider.class,
    IPResolverProvider.class,
    DnsSrvNameResolver.class,
    NameResolverProvider.class,
    LoadBalancerProvider.class,
    DnsNameResolverProvider.class,
    NameResolverRegistry.class
})

我怀疑这不是由于类未正确注册造成的,而是由动态类加载中一些与本机相关的特性引起的。

接下来要尝试什么有什么建议吗?我在构建过程中没有看到任何警告。

编辑:

Installed features: [cache, cdi, hibernate-validator, kafka-client, micrometer, mongodb-client, mongodb-panache, narayana-jta, quartz, reactive-routes, resteasy-reactive, resteasy-reactive-jackson, scheduler, security, security-properties-file, smallrye-context-propagation, smallrye-health, smallrye-jwt, smallrye-reactive-messaging, smallrye-reactive-messaging-kafka, vertx]

我还在本机构建器调用行中看到:

-H:-UseServiceLoaderFeature

编辑 2,堆栈跟踪:

2023-07-27 15:50:24,930 ERROR [io.qua.run.Application] (main) Failed to start application (with profile [prod]): java.lang.RuntimeException: Failed to start quarkus
    at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
    at io.quarkus.runtime.Application.start(Application.java:101)
    at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
    at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
    at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
    at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
    at com.y.z.responsedispatcher.ResponseDispatcher.main(ResponseDispatcher.java:10)
Caused by: java.lang.IllegalArgumentException: cannot find a NameResolver for ip:///localhost:2379
    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:742)
    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:751)
    at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:631)
    at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:631)
    at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:297)
    at io.vertx.grpc.VertxChannelBuilder.build(VertxChannelBuilder.java:309)
    at io.etcd.jetcd.impl.ClientConnectionManager.getChannel(ClientConnectionManager.java:70)
    at io.etcd.jetcd.impl.ClientConnectionManager.newStub(ClientConnectionManager.java:102)
    at io.etcd.jetcd.impl.WatchImpl.<init>(WatchImpl.java:68)
    at io.etcd.jetcd.impl.ClientImpl.lambda$new$5(ClientImpl.java:53)
    at io.etcd.jetcd.support.MemorizingClientSupplier.get(MemorizingClientSupplier.java:37)
    at io.etcd.jetcd.impl.ClientImpl.getWatchClient(ClientImpl.java:85)
    at y.z.etcd.commons.core.EtcdClient.watchValues(EtcdClient.java:118)
    at y.z.etcd.commons.core.EtcdClient.watchValues(EtcdClient.java:112)
    at y.z.etcd.commons.core.EtcdClient_ClientProxy.watchValues(Unknown Source)
    at y.z.etcd.commons.z.services.zEtcdCache.init(zEtcdCache.java:41)
    at y.z.etcd.commons.z.services.zEtcdCache_Bean.doCreate(Unknown Source)
    at y.z.etcd.commons.z.services.zEtcdCache_Bean.create(Unknown Source)
    at y.z.etcd.commons.z.services.zEtcdCache_Bean.create(Unknown Source)
    at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:113)
    at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:37)
    at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:34)
    at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
    at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
    at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:34)
    at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:21)
    at y.z.etcd.commons.z.services.zEtcdCache_ClientProxy.arc$delegate(Unknown Source)
    at y.z.etcd.commons.z.services.zEtcdCache_ClientProxy.arc_contextualInstance(Unknown Source)
    at y.z.etcd.commons.z.services.zEtcdCache_Observer_Synthetic_7e505f92dfea7e2f74425f463632933f0b546710.notify(Unknown Source)
    at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:346)
    at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:328)
    at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:82)
    at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:155)
    at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:106)
    at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy_0(Unknown Source)
    at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy(Unknown Source)
    ... 7 more
native classloader quarkus graalvm
© www.soinside.com 2019 - 2024. All rights reserved.