netty 不检测 netty-tcnative

netty does not detect netty-tcnative

在深入研究我的问题时,解释了 atg gRpc with TLS Client Authentication using SunPKCS11 in netty fails,我更改了 netty-tcnative-boringssl 的版本。我 build.gradle 中的 cange 来自

compile 'io.netty:netty-tcnative-boringssl-static:1.1.33.Fork26' 

compile 'io.netty:netty-tcnative-boringssl-static:+'

导致:

+--- io.netty:netty-tcnative-boringssl-static:+ -> 2.0.1.Final

我这样做是因为根据 netty 的 javadoc SslContextBuilder's keyManager(KeyManagerFactory factory) 方法也适用于作为提供程序的 OpenSSL,但不适用于版本 1.1.33.Fork26。

现在,对于新版本,netty 的 slf4j 调试输出告诉我:

[main] DEBUG io.netty.handler.ssl.OpenSsl - netty-tcnative not in the classpath; OpenSslEngine will be unavailable

所以netty-tcnative的检测好像是失败了。调试成 io.netty.handler.ssl.OpenSsl的静态代码块, 检测失败,因为

Class.forName("org.apache.tomcat.jni.SSL", false, OpenSsl.class.getClassLoader());

抛出异常。 我做错什么了吗,或者这是某种复苏 经年问题 (https://github.com/relayrides/pushy/issues/303 and https://github.com/netty/netty-tcnative/issues/136)? // 使用 Oracle Java 1.8.21

在 64 位 Win 10 上工作

Grpc Java 1.3.0 不支持 netty 版本 2.。等待并更新到 gRPC java 1.4.0 开箱即用,因为对 netty 2. 的支持包含在提交 https://github.com/grpc/grpc-java/commit/67eefa69b4009948ac664691e719f683c4478290 中。