zoukankan      html  css  js  c++  java
  • netty_transport_native_epoll cannot be loaded from java.library.path, now trying export to -Dio.netty.native.workdir:

    背景

    按照尚硅谷周阳老师的springcloud系列课程敲代码,然后部署到linux,日志级别改成debug看到以下错误

    .NativeLibraryLoader - netty_transport_native_epoll cannot be loaded from java.library.path, now trying export to -Dio.netty.native.workdir: /tmp
    java.lang.UnsatisfiedLinkError: no netty_transport_native_epoll in java.library.path
            at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
            at java.lang.Runtime.loadLibrary0(Runtime.java:871)
            at java.lang.System.loadLibrary(System.java:1124)
            at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
            at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:351)
            at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
            at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:253)
            at io.netty.channel.epoll.Native.<clinit>(Native.java:69)
            at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:39)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:264)
            at reactor.netty.resources.DefaultLoopEpoll.<clinit>(DefaultLoopEpoll.java:96)
            at reactor.netty.resources.DefaultLoopNativeDetector.<clinit>(DefaultLoopNativeDetector.java:35)
            at reactor.netty.resources.LoopResources.hasNativeSupport(LoopResources.java:332)
            at reactor.netty.resources.LoopResources.preferNative(LoopResources.java:273)
            at reactor.netty.resources.DefaultLoopResources.onServerSelect(DefaultLoopResources.java:149)
            at reactor.netty.tcp.TcpResources.onServerSelect(TcpResources.java:256)
            at reactor.netty.tcp.TcpServerRunOn.configure(TcpServerRunOn.java:53)
            at reactor.netty.tcp.TcpServerRunOn.configure(TcpServerRunOn.java:43)
            at reactor.netty.tcp.TcpServerBootstrap.configure(TcpServerBootstrap.java:39)
            at reactor.netty.tcp.TcpServerBootstrap.configure(TcpServerBootstrap.java:39)
            at reactor.netty.tcp.TcpServerBootstrap.configure(TcpServerBootstrap.java:39)
            at reactor.netty.tcp.TcpServerBootstrap.configure(TcpServerBootstrap.java:39)
            at reactor.netty.tcp.TcpServerChannelGroup.configure(TcpServerChannelGroup.java:44)
            at reactor.netty.tcp.TcpServerBootstrap.configure(TcpServerBootstrap.java:39)
            at reactor.netty.tcp.TcpServerBootstrap.configure(TcpServerBootstrap.java:39)
            at reactor.netty.tcp.TcpServer.bind(TcpServer.java:165)

    作为强迫症患者,看到这个想动手改改,于是找到以下文字

    Since 1.2.2 netty engine is trying to initialize native transport is available with fallback to NIO implementation.

    This is not an error. The problem is that you have wrong logger configuration so you see netty debug log.

    解决方法

    笔者使用的Springcloud版本比较高,2.3.4.RELASE,mvn package打包后看到netty版本是4.1.52.Final,在项目添加依赖

    netty目前支持macOS/BSD、Linux内核的调优,大家需要根据自己部署的服务器CPU架构类型选择相应的包。

    执行以下命令

    uname -m

     笔者部署在华为云鲲鹏云arm架构,所有要使用linux-aarch64,如果是普通X86架构cpu使用linux-x86_64(默认打包用linux-x86-64)

    <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-transport-native-epoll</artifactId>
         <version>4.1.52.Final</version>
         <classifier>linux-aarch64</classifier>
    </dependency>

    打开jar包确认,如果有以下包说明打包成功

    查看日志

    grep -in native

     以上说明加载成功

     参考

    https://github.com/ktorio/ktor/issues/1203

    https://netty.io/wiki/native-transports.html

  • 相关阅读:
    联表查询用on和where的区别
    了解触发器
    QUIC协议,了解
    SQL Mode
    redis持久化
    Kali Linux渗透测试实战 1.2 环境安装及初始化
    电容降压
    单火取电
    大整数的因子
    最大公约数
  • 原文地址:https://www.cnblogs.com/passedbylove/p/13791016.html
Copyright © 2011-2022 走看看