Пример кода Ktor не запускается после создания нового проекта

#java #kotlin #intellij-idea #ktor

Вопрос:

Я только что создал проект ktor из встроенных шаблонов idea(2.1.2.4416.7), и при открытии веб-страницы в консоли я получаю следующую ошибку:

 2021-06-27 12:16:34.158 [main] INFO  ktor.application - Responding at http://0.0.0.0:8080
2021-06-27 12:16:41.583 [eventLoopGroupProxy-4-1] TRACE ktor.application - Failed to decode request
java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)
    at io.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:64)
    at io.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:95)
    at io.netty.handler.codec.http.HttpObjectDecoder.decode(HttpObjectDecoder.java:249)
    at io.netty.handler.codec.http.HttpServerCodec$HttpServerRequestDecoder.decode(HttpServerCodec.java:123)
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:508)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:447)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
    at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda-1$lambda-0(NettyApplicationEngine.kt:251)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:829)
 

Есть какие-нибудь идеи? Он использует java версии 11, gradle версии 7.1 и kotlin версии 1.6.

Вот исходный код на github: https://github.com/Digital-Nomad/thedrewreport

Комментарии:

1. можете ли вы поделиться кодом на github?

2. Я могу воспроизвести вашу проблему, если я принудительно подключусь к HTTP2 ( curl --http2-prior-knowledge http://0.0.0.0:8080 ). Проблема в том, что движок Netty сейчас не поддерживает HTTP2. Не могли бы вы, пожалуйста, описать, как вы делаете запрос?

3. Я использую firefox, чтобы открыть страницу с образцом.