короткая версия < /h2>
Discord4j Bot Run of java main: работает нормально < /li>
Discord4j Bot Run в рамках A Quarkus Main: не разрешает DNS для Discord.com < /li>
< /ul>
Что делает Quarkus, который предотвратит < /p>
the Контекст < /h2>
Я пытаюсь заставить Discord4j работать в Quarkus, но я сталкиваюсь с некоторыми ошибками. , и это работает нормально, если я бегу из основного метода Java. Ну, может быть, не так много, но вдруг реактор Нетти больше не может разрешить домен Discord.com (стек доступен ниже). < /P>
Код Quarkus и основной метод вызовите тот же код Полем Единственное отличие состоит в том, что токен Discord поступает из @ConfigMapping вместо жесткого кодирования, но значение правильно вводится. < /P>
вещи, которые я попробовал < /h2>
< ul>
Я попытался принудить реагируйте, как предложено на другом, очевидно, связанный с этим вопросом из года назад, но он ничего не решил. < /li>
Я также дал Quarkus Discord4j быстро пытается, но, похоже, у него есть те же симптомы -> это предполагает, что это не всегда было проблемой, возможно, что -то, связанное с эволюцией Quarkus (POM Project предполагает, что это было последнее тестирование с Quarkus 3.7, вероятно, год Я назад). Netty?) Конфигурация, но я не могу найти подробную информацию об этом, или как это приведет к этой ошибке. Проблема? >
Технический стек < /h2>
Discord4j 3.2.7 < /li>
Quarkus 3.18.1 (голый кость >
сокращенно < /h3>
2025-02-12 22:07:18,136 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi]
2025-02-12 22:07:19,424 INFO [dis.cor.DiscordClientBuilder] (Quarkus Main Thread) Discord4J 3.2.6-5-g501ec30 (https://discord4j.com)
2025-02-12 22:07:19,897 WARN [io.net.res.dns.DefaultDnsServerAddressStreamProvider] (d4j-limiter-1) Default DNS servers: [/[2001:4860:4860:0:0:0:0:8888]:53, /[2001:4860:4860:0:0:0:0:8844]:53] (Google Public DNS as a fallback)
2025-02-12 22:07:20,153 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application
Exception in DiscordConfiguration.java:76
74 });
75
→ 76 login.block();
77 return client;
78 }
...
: reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: Failed to resolve 'discord.com' [A(1)] after 2 queries
at reactor.core.Exceptions.propagate(Exceptions.java:396)
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:97)
at reactor.core.publisher.Mono.block(Mono.java:1742)
...
Caused by: java.net.UnknownHostException: Failed to resolve 'discord.com' [A(1)] after 2 queries
at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1150)
Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below:
Error has been observed at the following site(s):
*__checkpoint ⇢ Request to GET /gateway/bot [RequestStream]
*__checkpoint ⇢ Request to GET /gateway/bot [DefaultRouter]
Original Stack Trace:
at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1150)
at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:1097)
at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:455)
at io.netty.resolver.dns.DnsResolveContext.access$700(DnsResolveContext.java:70)
at io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:524)
...
Caused by: io.netty.resolver.dns.DnsNameResolverException: [223: /[2001:4860:4860:0:0:0:0:8844]:53] DefaultDnsQuestion(discord.com. IN A) failed to send a query '223' via UDP (no stack trace available)
Caused by: java.net.SocketException: Network is unreachable: sendto
at java.base/sun.nio.ch.DatagramChannelImpl.send0(Native Method)
at java.base/sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:1005)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:966)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:889)
at io.netty.channel.socket.nio.NioDatagramChannel.doWriteMessage(NioDatagramChannel.java:297)
...
2025-02-12 22:07:20,200 INFO [io.quarkus] (Quarkus Main Thread) mybot stopped in 0.011s
< /code>
full < /h3>
2025-02-12 22:07:18,129 INFO [io.quarkus] (Quarkus Main Thread) mybot 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.18.1) started in 2.662s.
2025-02-12 22:07:18,136 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2025-02-12 22:07:18,136 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi]
2025-02-12 22:07:19,424 INFO [dis.cor.DiscordClientBuilder] (Quarkus Main Thread) Discord4J 3.2.6-5-g501ec30 (https://discord4j.com)
2025-02-12 22:07:19,897 WARN [io.net.res.dns.DefaultDnsServerAddressStreamProvider] (d4j-limiter-1) Default DNS servers: [/[2001:4860:4860:0:0:0:0:8888]:53, /[2001:4860:4860:0:0:0:0:8844]:53] (Google Public DNS as a fallback)
2025-02-12 22:07:20,153 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application
Exception in DiscordConfiguration.java:76
74 });
75
→ 76 login.block();
77 return client;
78 }
Exception in DiscordConfiguration.java:30
28 log.debug("Producing Discord bot");
29
→ 30 return buildDiscordClient(config.token());
31 }
32
: reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: Failed to resolve 'discord.com' [A(1)] after 2 queries
at reactor.core.Exceptions.propagate(Exceptions.java:396)
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:97)
at reactor.core.publisher.Mono.block(Mono.java:1742)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration.buildDiscordClient(DiscordConfiguration.java:76)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration.produceBot(DiscordConfiguration.java:30)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration_ProducerMethod_produceBot_aihjzrC3vxo3N-4V44lsyBRtCpQ_Bean.doCreate(Unknown Source)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration_ProducerMethod_produceBot_aihjzrC3vxo3N-4V44lsyBRtCpQ_Bean.create(Unknown Source)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration_ProducerMethod_produceBot_aihjzrC3vxo3N-4V44lsyBRtCpQ_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:32)
at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
at io.quarkus.arc.impl.ComputingCacheContextInstances.computeIfAbsent(ComputingCacheContextInstances.java:19)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration_ProducerMethod_produceBot_aihjzrC3vxo3N-4V44lsyBRtCpQ_Bean.get(Unknown Source)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration_ProducerMethod_produceBot_aihjzrC3vxo3N-4V44lsyBRtCpQ_Bean.get(Unknown Source)
at org.keyboardplaying.labs.HabotApplication_Bean.doCreate(Unknown Source)
at org.keyboardplaying.labs.HabotApplication_Bean.create(Unknown Source)
at org.keyboardplaying.labs.HabotApplication_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.c0(Unknown Source)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.computeIfAbsent(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:23)
at org.keyboardplaying.labs.HabotApplication_ClientProxy.arc$delegate(Unknown Source)
at org.keyboardplaying.labs.HabotApplication_ClientProxy.run(Unknown Source)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:143)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:77)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:48)
at io.quarkus.runner.GeneratedMain.main(Unknown Source)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:116)
at java.base/java.lang.Thread.run(Thread.java:1583)
Suppressed: java.lang.Exception: #block terminated with an error
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99)
at reactor.core.publisher.Mono.block(Mono.java:1742)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration.buildDiscordClient(DiscordConfiguration.java:76)
at org.keyboardplaying.labs.discord.config.DiscordConfiguration.produceBot(DiscordConfiguration.java:30)
... 32 more
Caused by: java.net.UnknownHostException: Failed to resolve 'discord.com' [A(1)] after 2 queries
at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1150)
Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: < b r / > E r r o r h a s b e e n o b s e r v e d a t t h e f o l l o w i n g s i t e ( s ) : < b r / > * _ _ c h e c k p o i n t ⇢ R e q u e s t t o G E T / g a t e w a y / b o t [ R e q u e s t S t r e a m ] < b r / > * _ _ c h e c k p o i n t ⇢ R e q u e s t t o G E T / g a t e w a y / b o t [ D e f a u l t R o u t e r ] < b r / > O r i g i n a l S t a c k T r a c e : < b r / > a t i o . n e t t y . r e s o l v e r . d n s . D n s R e s o l v e C o n t e x t . f i n i s h R e s o l v e ( D n s R e s o l v e C o n t e x t . j a v a : 1 1 5 0 ) < b r / > a t i o . n e t t y . r e s o l v e r . d n s . D n s R e s o l v e C o n t e x t . t r y T o F i n i s h R e s o l v e ( D n s R e s o l v e C o n t e x t . j a v a : 1 0 9 7 ) < b r / > a t i o . n e t t y . r e s o l v e r . d n s . D n s R e s o l v e C o n t e x t . q u e r y ( D n s R e s o l v e C o n t e x t . j a v a : 4 5 5 ) < b r / > a t i o . n e t t y . r e s o l v e r . d n s . D n s R e s o l v e C o n t e x t . a c c e s s $ 7 0 0 ( D n s R e s o l v e C o n t e x t . j a v a : 7 0 ) < b r / > a t i o . n e t t y . r e s o l v e r . d n s . D n s R e s o l v e C o n t e x t $ 2 . o p e r a t i o n C o m p l e t e ( D n s R e s o l v e C o n t e x t . j a v a : 5 2 4 ) < b r / > a t i o . n e t t y . u t i l . c o n c u r r e n t . D e f a u l t P r o m i s e . n o t i f y L i s t e n e r 0 ( D e f a u l t P r o m i s e . j a v a : 5 9 0 ) < b r / > a t i o . n e t t y . u t i l . c o n c u r r e n t . D e f a u l t P r o m i s e . n o t i f y L i s t e n e r s 0 ( D e f a u l t P r o m i s e . j a v a : 5 8 3 ) < b r / > a t i o . n e t t y . u t i l . c o n c u r r e n t . D e f a u l t P r o m i s e . n o t i f y L i s t e n e r s N o w ( D e f a u l t P r o m i s e . j a v a : 5 5 9 ) < b r / > a t i o . n e t t y . u t i l . c o n c u r r e n t . D e f a u l t P r o m i s e . n o t i f y L i s t e n e r s ( D e f a u l t P r o m i s e . j a v a : 4 9 2 ) < b r / > a t i o . n e t t y . u t i l . c o n c u r r e n t . D e f a u l t P r o m i s e . s e t V a l u e 0 ( D e f a u l t P r o m i s e . j a v a : 6 3 6 ) < b r / > a t i o . n e t t y . u t i l . c o n c u r r e n t . D e f a u l t P r o m i s e . s e t F a i l u r e 0 ( D e f a u l t P r o m i s e . j a v a : 6 2 9 ) < b r / > at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
at io.netty.resolver.dns.DnsQueryContext.finishFailure(DnsQueryContext.java:343)
at io.netty.resolver.dns.DnsQueryContext.onQueryWriteCompletion(DnsQueryContext.java:264)
at io.netty.resolver.dns.DnsQueryContext.access$600(DnsQueryContext.java:51)
at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:255)
at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:252)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
at io.netty.util.internal.PromiseNotificationUtil.tryFailure(PromiseNotificationUtil.java:64)
at io.netty.channel.ChannelOutboundBuffer.safeFail(ChannelOutboundBuffer.java:754)
at io.netty.channel.ChannelOutboundBuffer.remove0(ChannelOutboundBuffer.java:339)
at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:319)
at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:158)
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:929)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:359)
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:893)
at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1319)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:935)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921)
at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907)
at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:916)
at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:253)
at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:398)
at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:247)
at io.netty.resolver.dns.DnsNameResolver.resolveNow(DnsNameResolver.java:1302)
at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached0(DnsNameResolver.java:1286)
at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached(DnsNameResolver.java:1227)
at io.netty.resolver.dns.DnsNameResolver.doResolveAllNow(DnsNameResolver.java:1156)
at io.netty.resolver.dns.DnsNameResolver.access$600(DnsNameResolver.java:96)
at io.netty.resolver.dns.DnsNameResolver$7.operationComplete(DnsNameResolver.java:1145)
at io.netty.resolver.dns.DnsNameResolver$7.operationComplete(DnsNameResolver.java:1142)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:185)
at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:380)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: io.netty.resolver.dns.DnsNameResolverException: [223: /[2001:4860:4860:0:0:0:0:8844]:53] DefaultDnsQuestion(discord.com. IN A) failed to send a query '223' via UDP (no stack trace available)
Caused by: java.net.SocketException: Network is unreachable: sendto
at java.base/sun.nio.ch.DatagramChannelImpl.send0(Native Method)
at java.base/sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:1005)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:966)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:889)
at io.netty.channel.socket.nio.NioDatagramChannel.doWriteMessage(NioDatagramChannel.java:297)
at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:143)
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:929)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:359)
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:893)
at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1319)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:935)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921)
at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907)
at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:916)
at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:253)
at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:398)
at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:247)
at io.netty.resolver.dns.DnsNameResolver.resolveNow(DnsNameResolver.java:1302)
at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached0(DnsNameResolver.java:1286)
at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached(DnsNameResolver.java:1227)
at io.netty.resolver.dns.DnsNameResolver.doResolveAllNow(DnsNameResolver.java:1156)
at io.netty.resolver.dns.DnsNameResolver.access$600(DnsNameResolver.java:96)
at io.netty.resolver.dns.DnsNameResolver$7.operationComplete(DnsNameResolver.java:1145)
at io.netty.resolver.dns.DnsNameResolver$7.operationComplete(DnsNameResolver.java:1142)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:185)
at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:380)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
2025-02-12 22:07:20,200 INFO [io.quarkus] (Quarkus Main Thread) mybot stopped in 0.011s
Подробнее здесь: https://stackoverflow.com/questions/794 ... ctor-netty