0

我试图将我的项目从 java 7 移动到 8。当我开始通过 wildfly11 调试我的项目时,它显示此错误并且我的部署失败。

 DEBUG [io.undertow] (MSC service thread 1-7) JDK9 ALPN not supported: java.lang.NoSuchMethodException: javax.net.ssl.SSLParameters.setApplicationProtocols([Ljava.lang.String;)
at java.lang.Class.getMethod(Unknown Source) [rt.jar:1.8.0_31]
at io.undertow.protocols.alpn.JDK9AlpnProvider$1.run(JDK9AlpnProvider.java:47) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at io.undertow.protocols.alpn.JDK9AlpnProvider$1.run(JDK9AlpnProvider.java:43) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_31]
at io.undertow.protocols.alpn.JDK9AlpnProvider.<clinit>(JDK9AlpnProvider.java:43) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.8.0_31]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) [rt.jar:1.8.0_31]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) [rt.jar:1.8.0_31]
at java.lang.reflect.Constructor.newInstance(Unknown Source) [rt.jar:1.8.0_31]
at java.lang.Class.newInstance(Unknown Source) [rt.jar:1.8.0_31]
at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source) [rt.jar:1.8.0_31]
at java.util.ServiceLoader$LazyIterator.next(Unknown Source) [rt.jar:1.8.0_31]
at java.util.ServiceLoader$1.next(Unknown Source) [rt.jar:1.8.0_31]
at io.undertow.protocols.alpn.ALPNManager.<init>(ALPNManager.java:40) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at io.undertow.protocols.alpn.ALPNManager.<clinit>(ALPNManager.java:35) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at io.undertow.server.protocol.http.AlpnOpenListener.<init>(AlpnOpenListener.java:68) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at io.undertow.server.protocol.http.AlpnOpenListener.<init>(AlpnOpenListener.java:90) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at io.undertow.server.protocol.http.AlpnOpenListener.<init>(AlpnOpenListener.java:82) [undertow-core-1.4.18.Final.jar:1.4.18.Final]
at org.wildfly.extension.undertow.HttpsListenerService.createAlpnOpenListener(HttpsListenerService.java:101) [wildfly-undertow-11.0.0.Final.jar:11.0.0.Final]
at org.wildfly.extension.undertow.HttpsListenerService.createOpenListener(HttpsListenerService.java:86) [wildfly-undertow-11.0.0.Final.jar:11.0.0.Final]
at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:160) [wildfly-undertow-11.0.0.Final.jar:11.0.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032) [jboss-msc-1.2.7.SP1.jar:1.2.7.SP1]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955) [jboss-msc-1.2.7.SP1.jar:1.2.7.SP1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.8.0_31]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.8.0_31]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.8.0_31]

提前致谢。

4

2 回答 2

2

首先,Java 7 和 8 都不支持。Java 7Java 8的类文档中Application Layer Protocol Negotiation(ALPN)没有这种方法。我想知道您的项目如何能够在没有该方法的情况下在 Java 7 中运行。setApplicationProtocols()SSLParameterssetApplicationProtocols()

但是,从 Java 9 开始,ALPN 已成为 Java SE 标准的一部分。setApplicationProtocols() 您可以在此处找到文档。

如果你不想升级到 Java 9 并且仍然使用 ALPN,你可以去 Jetty 项目,它提供了一个支持 ALPN 的库。Jetty 的 ALPN 引导 jar 可与 OpenJDK 和 Oracle 的 JDK(基于 OpenJDK)一起使用。如果您发现设置 Jetty 的 ALPN jar 有任何问题,那么已经有一个关于SO 的问题。

于 2018-05-03T06:09:22.047 回答
0

为了摆脱错误(因此不使用 ALPN),设置enable-http2http-listenerhttps-listenerfalse

于 2019-10-24T08:58:22.103 回答