感谢gRPC + SSL = UnsatisfiedLinkError上的@nmittler我已经在我的Windows PC和目标Linux平台上运行了gRPC + SSL。
但仅当我为<classifier>
依赖项指定io.netty/netty-tcnative-boringssl-static/1.1.33.Fork17
时。那可以是:
windows-x86_64
)${os.detected.classifier}
但这意味着我只能继续:
但我真正 能够做的就是在Windows上编译但在Linux上运行。所以,理论上,我可以放弃<classifier>
来引入超级jar(如the docs中所述)。
但这并不奏效:当我逐步完成io.netty.util.internal.NativeLibraryLoader.load()
时,我发现了对System.mapLibraryName()
的电话。
netty-tcnative.dll
。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
)。< / LI>
查看jar的分类 linux版本,我可以看到它包含META-INF/native/libnetty-tcnative.so
...这意味着需要以不同的方式构建超级jar(重命名{{1} } libnetty-tcnative-linux-x86_64.so
)或libnetty-tcnative.so
某处需要考虑不同的命名......
我是否在正确的轨道上?有人可以帮忙解决这个问题吗?
答案 0 :(得分:0)
你是对的,Maven Central上的超级jar不包含共享库。目前尚不清楚问题是构建还是部署jar。我已经提出https://github.com/netty/netty-tcnative/issues/145来跟踪修复。
答案 1 :(得分:0)
升级到io.grpc/grpc-all/0.14.0
(来自0.13.2
)解决了我的问题,因为它带来了io.netty/netty-handler
的更新版本(4.1.0.CR7
与4.1.0.CR3
)。< / p>