当前位置: 首页 > 知识库问答 >
问题:

java.lang.NoClassDefFoundError: sun/Security/ssl/支持的椭圆曲线扩展

谭昕
2023-03-14

我正在尝试保护一个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)

浏览器(火狐)显示:错误

有什么问题吗?

共有3个答案

尹雅健
2023-03-14

我在intelliJ也有同样的经历,我有dk1。8.0_111.jdk,我下载了jdk1。8.0_301.并将jdk路径更改为指向jdk1。8.0_301.jdk在intelliJ的家。因为我使用的是MAC,所以路径是:/Library/Java/JavaVirtualMachines/jdk1。8.0_301.jdk/Contents/Home

它解决了我的问题。

李联
2023-03-14

我调查了乔纳森·库斯蒂克在回答中提到的错误。问题的根源是Glassfish(或Payara)使用了旧版本的Grizzly。所以,我想也许用一个新版本替换grizzly-npn-bootstrap.jar可以解决这个问题。

这个JAR文件位于

这是下载链接。

袁琪
2023-03-14

这看起来和这个bug是同一个问题,这个bug是由Java 8 162中的一个更改引起的,该类在Java 8 162中被重命名。这是对OpenJDK中这个错误的修复,这个错误在这里被更改了,但不幸的是,这是一个突破性的更改,在他们重命名类时引入了这个问题。

另一种选择是使用Payara 5.182,这是一种玻璃鱼的叉子,包括一个修复方法

 类似资料:
  • 创建一个形状为椭圆的曲线。 将xRadius与yRadius设为相等的值它将会成为一个圆。 代码示例 const curve = new THREE.EllipseCurve( 0, 0, // ax, aY 10, 10, // xRadius, yRadius 0, 2 * Math.PI, // aStartAngle, aEndA

  • 问题内容: 我正在尝试为椭圆曲线创建自己的库。有些事情行得通,但有些则行不通。 要根据私钥计算公钥,应将生成器点乘以私钥,然后得到另一个点:公钥点(ECPoint = BigInteger * ECPoint)。 现在,我有一个私钥,并将其与Secp256k1曲线的生成器点相乘。我得到一个钥匙,但这不是我应该得到的钥匙。 这是我的JAVA代码: 我的代码有问题吗?secp256k1是否有特定的乘法

  • 本节课通过介绍直线、圆弧线,以及这些曲线的基类Curve。 圆弧线ArcCurve 圆弧线ArcCurve的基类是椭圆弧线EllipseCurve,关于圆弧线的使用方法可以查看threejs文档中的椭圆弧线。 ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) 参数 含义 aX, aY 圆弧圆心坐标 aRadius 圆弧

  • 问题内容: 该BouncyCastle的加密API允许创建和使用的常规验证数字签名包对象,如,和它们的容器。 假设我使用OpenSSL创建一个.pem(或更简单的话是一个.der文件),其中包含要在应用程序中使用的椭圆曲线私钥。例如,它看起来像这样: 如何使用BouncyCastle API获取同时包含此私钥和相应公钥的? 请注意,我要使用BouncyCastle 1.50(在撰写本文时为最新)中

  • BouncyCastle加密API允许使用常规的<code>java创建和验证数字签名。安全性包对象,如,及其容器<code>java.security.KeyPair。 假设我使用OpenSSL创建了一个. pem(或者更简单的. der文件),其中包含了我希望在应用程序中使用的椭圆曲线私钥。例如,它看起来像这样: 我如何使用BouncyCastle APIs来获取包含此私钥和相应公钥的< co

  • 我正在使用Ruby 2.5.x OpenSSL库研究椭圆曲线。我可以很容易地使用 但是给定一个私钥,我想重新生成公钥。 我知道OpenSSL可以做到这一点,因为命令行允许您这样做,Ruby比特币项目也可以做到这一点。但是Ruby比特币项目使用FFI而不是Ruby提供的接口有自己的OpenSSL接口。 Ruby 2.5.x openssl 库是否没有公开足够的 OpenSSL 接口,以便能够从私钥生