java.lang.NoClassDefFoundError:sun/security/ssl/SupportedEllipticCurvesExtension

Ter*_*uma 6 security glassfish java-ee netbeans-8 glassfish-5

我正在尝试保护Web应用程序,以便我可以使用HTTPS的安全数据传输层TLS/SSL.我正在使用glassfish服务器5.启动服务器后,我做了一个https:// localhost:8181,它给了我这个例外:

    Warning:   GRIZZLY0013: Exception during FilterChain execution
java.lang.NoClassDefFoundError: sun/security/ssl/SupportedEllipticCurvesExtension
    at sun.security.ssl.HelloExtensions.<init>(HelloExtensions.java:82)
    at sun.security.ssl.HandshakeMessage$ClientHello.<init>(HandshakeMessage.java:362)
    at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:223)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:984)
    at sun.security.ssl.Handshaker$1.run(Handshaker.java:924)
    at sun.security.ssl.Handshaker$1.run(Handshaker.java:921)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1379)
    at org.glassfish.grizzly.ssl.SSLUtils.executeDelegatedTask(SSLUtils.java:274)
    at org.glassfish.grizzly.ssl.SSLBaseFilter.doHandshakeStep(SSLBaseFilter.java:708)
    at org.glassfish.grizzly.ssl.SSLBaseFilter.doHandshakeStep(SSLBaseFilter.java:622)
    at org.glassfish.grizzly.ssl.SSLBaseFilter.handleRead(SSLBaseFilter.java:334)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:539)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
    at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)

浏览器(firefox)显示: 错误

可能是什么问题呢?

Jon*_*ick 10

这看起来与此错误相同,这是由Java 8 162中的更改引起的,其中该类已重命名.这是修复了OpenJDK中的这个错误,这个错误这里被改变,但不幸的是,这是一个突破性的变化,引入了这个问题,因为他们重命名了这个类.

另一种方法是使用Payara 5.182,一种玻璃鱼叉,包括一个修复它.


M.S*_*sti 5

我调查了@Jonathan Coustick回答中提到的错误。问题的根源是Glassfish(或Payara)使用的旧版本。因此,我认为也许用较新的版本替代将解决该问题。grizzlygrizzly-npn-bootstrap.jar

该JAR文件位于<glassfish-root>/glassfish/modules/endorsed目录(对于GlassFish服务器)和<payara-root>/glassfish/lib目录(对于Payara服务器)中。1.7之前的版本会出现此错误。因此,我从maven.org获得了最新版本(当前为1.9),它的工作原理吸引人

这是下载链接

  • 它通过删除 grizzly-npn-bootstrap.jar 的 sun 文件夹(带有 jdk 8 261 的 glassfish 5.1)对我有用 (2认同)