在gRPC + SSL = UnsatisfiedLinkError上感谢@nmittler我已经在我的Windows PC和目标Linux平台上运行gRPC + SSL。
但是只有当我为io.netty/netty-tcnative-boringssl-static/1.1.33.Fork17依赖项指定一个<classifier>的io.netty/netty-tcnative-boringssl-static/1.1.33.Fork17 。 这可以是:
硬编码(如到windows-x86_64 )
使用os-maven-plugin和${os.detected.classifier}注入
但是这意味着我只能运行在:
Windows(或者我硬编码的平台)
我用来编译的平台
但是我真正希望能够做的是在Windows上编译,但是在Linux上运行。 所以, 从理论上讲 ,我可以放弃<classifier>来引入超级jar文件(正如文档中指定的那样)。
我如何使用Nginx 1.9.5作为gRPC的反向代理?
Windows上的gRPC C ++
但是,这是行不通的:当我通过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的分类 linux版本,我可以看到它包含meta-inf/native/libnetty-tcnative.so …这意味着要么build立不同的uber jar需要重新命名libnetty-tcnative-linux-x86_64.so要libnetty-tcnative.so )或NativeLibraryLoader某处需要考虑不同的命名…
我在正确的轨道上? 有人可以解决这个问题吗?
你是对的,Maven Central上的超级jar包不包含共享库。 目前还不清楚这个问题是建立还是部署这个罐子。 我已经提出了https://github.com/netty/netty-tcnative/issues/145跟踪修复。
升级到io.grpc/grpc-all/0.14.0 (从0.13.2 )解决了我的问题,因为它带来了io.netty/netty-handler的新版本( 4.1.0.CR7与4.1.0.CR3 )。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。