这个异常通常发生在使用Netty框架时,因为它需要底层的TLS ALPN提供程序。以下是解决这个问题的几种方法:
使用netty-tcnative提供程序: netty-tcnative是一个可选的Netty依赖项,它提供了OpenSSL的支持。您可以将以下依赖项添加到Maven或Gradle配置文件中:
Maven:
io.netty
netty-tcnative-boringssl-static
2.0.30.Final
Gradle:
implementation 'io.netty:netty-tcnative-boringssl-static:2.0.30.Final'
使用Conscrypt提供程序: Conscrypt是一个用于Java的安全通信库,它提供了ALPN的支持。您可以将以下依赖项添加到Maven或Gradle配置文件中:
Maven:
org.conscrypt
conscrypt-openjdk-uber
2.5.1
Gradle:
implementation 'org.conscrypt:conscrypt-openjdk-uber:2.5.1'
使用Jetty NPN/ALPN提供程序: Jetty NPN/ALPN是一个用于Java的库,它提供了ALPN的支持。您可以将以下依赖项添加到Maven或Gradle配置文件中:
Maven:
org.eclipse.jetty.alpn
alpn-api
1.1.3.v20160715
org.eclipse.jetty.alpn
alpn-boot
8.1.13.v20181017
provided
Gradle:
implementation 'org.eclipse.jetty.alpn:alpn-api:1.1.3.v20160715'
provided 'org.eclipse.jetty.alpn:alpn-boot:8.1.13.v20181017'
注意:alpn-boot的scope设置为"provided",因为它是由JVM提供的。
在使用上述方法之一后,重新运行应用程序,应该不再抛出"不合法状态异常:无法找到TLS ALPN提供程序;没有可用的netty-tcnative、Conscrypt或Jetty NPN/ALPN"异常。