gpt4 book ai didi

linux - gRPC + SSL + uber jar + Linux = 加载 netty-tcnative 失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:38 28 4
gpt4 key购买 nike

感谢@nmittler gRPC + SSL = UnsatisfiedLinkError我已经在我的 Windows PC 和目标 Linux 平台上运行了 gRPC + SSL。

但只有当我指定 <classifier> 时对于 io.netty/netty-tcnative-boringssl-static/1.1.33.Fork17依赖。这可以是:

  1. 硬编码(例如 windows-x86_64)
  2. 使用os-maven-plugin注入(inject)和 ${os.detected.classifier}

但这意味着我只能运行:

  1. Windows(或我硬编码的任何平台)
  2. 我用来编译的平台

但我真正希望能够做的是在 Windows 上编译但在 Linux 上运行。所以,理论上,我可以省略 <classifier>引入 uber-jar(如 the docs 中指定)。

但这不起作用:当我单步执行 io.netty.util.internal.NativeLibraryLoader.load() 时我找到一个电话 System.mapLibraryName() .

  • 在 Windows 上,这会正确返回 netty-tcnative.dll .
  • 但在 Linux (RHEL 7) 上它返回 libnetty-tcnative.so ... 不在 uber-jar 中( jar tf netty-tcnative-boringssl-static-1.1.33.Fork17.jar 返回,除其他外, META-INF/native/libnetty-tcnative-linux-x86_64.so )。

查看 jar 的 classified linux 版本我可以看到它包含 META-INF/native/libnetty-tcnative.so ...这意味着需要以不同方式构建 uber jar(将 libnetty-tcnative-linux-x86_64.so 重命名为 libnetty-tcnative.so )或 NativeLibraryLoader某处需要考虑不同的命名...

我走在正确的轨道上吗?有人可以帮助解决这个问题吗?

最佳答案

没错,Maven Central 上的 uber jar 不包含共享库。目前尚不清楚问题是构建还是部署 jar。我养了https://github.com/netty/netty-tcnative/issues/145跟踪修复。

关于linux - gRPC + SSL + uber jar + Linux = 加载 netty-tcnative 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37395579/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com