我有这样的代码:
public static void main(String[] args) throws Exception {
System.out.println("ALPN class: " + ALPN.class);
HelloWorldClient client = new HelloWorldClient("localhost", 10009);
}
这给出了这样的输出:
ALPN class: class org.eclipse.jetty.alpn.ALPN
Exception in thread "main" java.lang.IllegalArgumentException: ALPN is not configured properly. See https://github.com/grpc/grpc-java/blob/master/SECURITY.md#troubleshooting for more information.
at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:163)
at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:136)
at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:124)
at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:94)
at btcduke.node.ln.HelloWorldClient.<init>(HelloWorldClient.java:35)
at btcduke.node.ln.HelloWorldClient.main(HelloWorldClient.java:76)
Caused by: java.lang.ClassNotFoundException: org/eclipse/jetty/alpn/ALPN
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at io.grpc.netty.JettyTlsUtil.isJettyAlpnConfigured(JettyTlsUtil.java:34)
at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:153)
... 5 more
HelloWorldClient 使用 grpc,看起来 grpc 正在尝试动态加载 ALPN 类。我对吗?找不到此类,所以我有错误消息。但是请看一下,我可以访问这个类(我在第一行打印这个类)。有谁知道为什么会这样?我不知道 :/
我通过添加 VM 参数“-Xbootclasspath/p:”来运行配置选项彻底解决了这个问题,但我不明白为什么我需要这样做,而且我认为这不是优雅的方法。