Netty Verify во время выполнения, NioEventLoopGroup - PullRequest
0 голосов
/ 10 марта 2020

Я отлаживал свою среду с помощью дополнений, и внезапно я получил ошибку проверки с Netty.

Версия Netty - 4.1.46.Final, Java Версия JDK - это 11 компиляция и время выполнения.

Я использую Guice, но он ничего не делает с частью netty, кроме инициализации этого класса, у меня также была эта ошибка при настройке другого проекта некоторое время назад, когда я вообще не использовал Guice.

Я пытался сделать недействительными кэши / перезапуск, -U с maven для обновления моих зависимостей, удаление даже intellij, а также -noverify ничего не делает.

Мой код:

class LoginService @Inject constructor() : AbstractIdleService()
{

    private lateinit var bootstrap : ServerBootstrap

    @Inject private lateinit var configuration: RSEEnvironment

    @Inject private lateinit var channelHandler: LoginChannelHandler

    private val bossGroup = NioEventLoopGroup(1)

    private val workerGroup = NioEventLoopGroup(Runtime.getRuntime().availableProcessors())

    private lateinit var future: ChannelFuture

    override fun startUp()
    {

        val hostAddress = configuration.getString("default_host")

        val hostPort = configuration.getInt("default_port")

        bootstrap = ServerBootstrap()

        bootstrap
            .group(bossGroup, workerGroup)
            .channel(NioServerSocketChannel::class.java)
            .childHandler(channelHandler)
            .option(ChannelOption.SO_KEEPALIVE, true)
            .option(ChannelOption.TCP_NODELAY, true)

        future = bootstrap.bind(hostAddress, hostPort).syncUninterruptibly()

        future.channel().closeFuture().sync()

    }

    override fun shutDown()
    {

        workerGroup.shutdownGracefully()

    }

    @Provides fun fetchEnvironment() = RSEEnvironment()

}

Ошибка :

Caused by: java.lang.VerifyError: class io.netty.channel.SingleThreadEventLoop overrides final method io.netty.util.concurrent.SingleThreadEventExecutor.pendingTasks()I
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:145)
    at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:37)
    at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:77)
    at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:52)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:96)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:91)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:72)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:52)
    at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:44)
    at rs.emulator.service.login.LoginService.<init>(LoginService.kt:25)
    at rs.emulator.service.login.LoginService$$FastClassByGuice$$f37422b6.newInstance(<generated>)

---------- update ---------

Если я создаю другой модуль в своем проекте и выполняю только основные действия c код, он отлично работает на том же maven-родителе.

1 Ответ

1 голос
/ 10 марта 2020

Это звучит как проблема пути к классу. Сдается мне, что у вас есть несколько версий netty на пути к классам. Убедитесь, что у вас есть только один.

...