- Published on
arm64架构上使用fabric-java-sdk 找不到netty-tcnative库的错误
- Authors
- Name
- JiGu
- @crypto20x
环境
OS: 银河麒麟v10 CPU: 鲲鹏920 ARCH: aarch64
需要这个库文件,libnetty_tcnative_linux_aarch_64.so编译或者下载得到 libnetty_tcnative_linux_aarch_64.so这个又依赖libapr-1.so.0这个库
- libapr-1.so.0 这个可以直接yum 安装
yum install apr-util
最终解决方案
在pom.xml里面指定版本
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-tcnative-boringssl-static</artifactId>
<version>2.0.34.Final</version>
</dependency>
这里还有个坑,上面那个图框选的库的名字是我改过的。java程序默认查找名字是 libnetty_tcnative_linux_aarch64.so,是找不到的。
- 更改jar包里面文件名 进入maven库的目录
respository\io\netty\netty-tcnative-boringssl-static\2.0.34.Final
执行
jar -vxf netty-tcnative-boringssl-static-2.0.34.Final.jar
改完之后,打包
jar -cvf netty-tcnative-boringssl-static-2.0.34.Final.jar io/ MEATA-INF/
然后maven 重新打包项目。 搞定! java -jar app.jar 运行成功!! 搞了我两天,坑啊。
安装
https://github.com/netty/netty-tcnative/issues/552 参考这个链接 可以在 https://repo1.maven.org/maven2/io/netty/netty-tcnative/2.0.34.Final/ maven库里找到 netty-tcnative-2.0.34.Final-linux-aarch64-fedora.jar 的包。 以zip方式打开,在META-INF\native\ 里面有libnetty_tcnative_linux_aarch64.so文件。
- 注意 这里得到的so跟java报错的名字不一样。后面的是_aarch64.so,需要的是aarch_64.so,重命名一下
将libnetty_tcnative_linux_aarch_64.so这个放入动态库的查找路径,/lib /lib64 /usr/lib /usr/lib64 其中之一都可以。以防万一,再设置下环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64
再运行java -jar xx.jar 可以通过了。但不知为啥,会出现段错误,jvm直接挂了。可能跟这个库是fedora专用的有关。
编译
我下载了源码,没编译成功。改天补 参考 https://bbs.huaweicloud.com/forum/thread-73193-1-1.html https://we8log.com/mental/post/345/ 编译死活找不到一个东西 报native-src错误