Java 找不到sun.security.ssl.SSLSessionImpl

Java 找不到sun.security.ssl.SSLSessionImpl,java,ssl,kotlin,glassfish,Java,Ssl,Kotlin,Glassfish,当我尝试使用okhttp或javax.ws.rs.client.client时,会出现以下错误 java.lang.NoSuchMethodError: ssl.SSLSessionImpl.(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Lsun/security/ssl/SessionId;Ljava/lang/String;I)V 在sun.security.ssl

当我尝试使用
okhttp
javax.ws.rs.client.client
时,会出现以下错误

java.lang.NoSuchMethodError: ssl.SSLSessionImpl.(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Lsun/security/ssl/SessionId;Ljava/lang/String;I)V

在sun.security.ssl包中搜索时,没有SSLSessionImpl类

Im使用Mac OS 10.13.3(17D102)

在Glassfish 5.0上运行我的战争

格雷德尔先生

编辑:因为这是“正确答案”,Java 1.8.0-151可能缺少安全补丁。我不建议降级到这样一个旧的Java版本

请看一下Payara项目或Glassfish的新版本

--

尝试将Java版本降级为Java 1.8.0-151。它应该会起作用


glassfish 5和Java 8 161之间存在一个问题,我昨天(3月19日)检查了这个问题,创建了一个,但夜间版本中没有关于这个问题的更改。

出现这个问题是因为glassfish将本机
sun.*
类嵌入
[glassfish 5_home]/glassfish/modules/annowed/grizzly npn bootstrap.jar
,因此它与
[JDK_HOME]/jre/lib/jsse.jar中包含的其他类冲突


因此,编辑
grizzly npn bootstrap.jar
(之前复制一份)文件并删除sun文件夹。

使用npn grizzly jar中完成的现有修复程序可能更优雅一些:

mkdir -p scratch/glassfish5/glassfish/modules/endorsed && cd scratch
wget http://download.oracle.com/glassfish/5.0.1/nightly/glassfish-5.0.1-b02-12_03_2018.zip
wget http://central.maven.org/maven2/org/glassfish/grizzly/grizzly-npn-bootstrap/1.8.1/grizzly-npn-bootstrap-1.8.1.jar
mv grizzly-npn-bootstrap-1.8.1.jar glassfish5/glassfish/modules/endorsed/grizzly-npn-bootstrap.jar
jar uvf glassfish-5.0.1-b02-12_03_2018.zip glassfish5/glassfish/modules/endorsed/grizzly-npn-bootstrap.jar 
echo "you have a patched archive for runnig with Java 8 patchlevel 191"

HTH

上述错误可能导致在浏览器中显示以下内容:

连接已重置页面加载时与服务器的连接已重置。 该站点可能暂时不可用或太忙。请稍后再试。 如果无法加载任何页面,请检查计算机的网络连接。 如果您的计算机或网络受到防火墙或代理的保护,请确保允许Firefox访问Web。

解决方案 下载: 并替换您的galssfish/payara grizzly-npn-bootstrap.jar


mv grizzly-npn-bootstrap-1.8.1.jar glassfish 5/glassfish/modules/approved/grizzly-npn bootstrap.jar

java 1.8.0¡中安全密码的更改破坏了glassfish 5,0的底层grizzly服务器中的SSL功能。最后一个可用的java版本是1.8.0_152
截至撰写本文之时,我可以确认Java1.8.0Ê与Glassfish 5.1(现在由Eclipse.org维护并可从Eclipse.org下载)一起工作,所包含的grizzly npn引导版本是1.9.0版。没有必要删除或更改任何内容

我刚刚遇到了这个令人沮丧的问题,我确实想对上面安托万的答案做一点扩展,这个答案对我很有用

请注意,我有Glassfish 5.0和Java
openjdk版本“1.8.0_232”
OpenJDK运行时环境(构建1.8.0_232-8u232-b09-0ubuntu1~18.04.1-b09)
OpenJDK 64位服务器虚拟机(构建25.232-b09,混合模式)

  • 正如Antoine提到的,我将
    grizzly npn bootstrap.jar作为备份复制到另一个位置

  • 我做了
    jar-xvf grizzly npn bootstrap.jar
    以查看jar中的确切类和文件夹位置。这给了我以下输出:

  • 请注意,jar文件包含根级别的3个文件夹:META-INForgsun。再次从Antoine的回答中,我们希望删除
    sun
    文件夹
  • 我不知道通过指定要删除的文件夹来重新创建jar的命令行方法,因此我执行了这个命令,通过添加META-INForg文件夹来重新创建
    grizzly-npn-bootstrap.jar
    :jar-cvf grizzly-npn-bootstrap.jar META-INF/*org/*
  • 随后,如果我执行
    jar-xvf grizzly npn bootstrap.jar
    命令,我会得到这个输出(注意不再列出sun文件夹):
  • 重新启动你的玻璃鱼
  • 在此之后,我不再收到上面张贴的OP的错误消息:

    java.lang.NoSuchMethodError: ssl.SSLSessionImpl.(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Lsun/security/ssl/SessionId;Ljava/lang/String;I)V


    就在几天前,我深入研究了这个问题,通过查看JDK源代码找到了根本原因。我认为您现在正在使用openjdk。 这是openjdk中的一个bug,最高可达1.8.0_242。 SSLSessionImpl在SSLSessionEngine中使用时未实例化。它被用作一个静态类,但是它只是一个最终类。 该问题已在1.8.0_252中修复,因此我建议您将其升级到此版本。或者切换到OracleJDK1.8.0的任何版本,因为其中没有这样的bug。 希望能有帮助。 Openjdk: Oracle jdk:

    非常感谢您!Jdk 1.8.0_151在尝试从glassfish 5.0服务器连接到MSSQL 2016时工作得非常出色,这对我来说非常有用。!因为许多JDK更新通常涉及安全更新。你可能会把自己置于危险之中。虽然这个答案是正确的,但我发现Antoine的答案是关于从指定的jar中删除sun文件夹,以便在不必降级JDK的情况下工作。我使用JRE 1.8.0_191和Payara 5.181为那些想知道如何从jar中删除类的人工作。jars和zip格式有一些相似之处。我使用7zip从jar中删除sun文件夹并重新启动glassfish,效果非常好。在JDK和Glassfish 5的更高版本中,您会发现与java.lang.NoSuchMethodError类似的异常:sun.security.ssl.SSLSessionImpl。(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Ljava/security/SecureRandom;Ljava/lang/String;I)V@Antonie我没有话要感谢你,兄弟,真的非常感谢你!!Glassfish 5.0和Java上的用户仍然存在此问题
    buildscript {
        ext.kotlin_version = '1.2.30'
    
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
            classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
        }
    }
    
    group 'invoice-administration-api'
    version '1.0-SNAPSHOT'
    
    apply plugin: 'idea'
    apply plugin: 'war'
    apply plugin: 'kotlin'
    apply plugin: 'kotlin-jpa'
    apply plugin: 'kotlin-allopen'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
        compileOnly group: 'javax', name: 'javaee-api', version: '8.0'
        compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.13.Final'
        compile group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: '2.26'
    }
    
    allOpen {
        annotation('javax.ejb.Stateless')
    }
    
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    
    mkdir -p scratch/glassfish5/glassfish/modules/endorsed && cd scratch
    wget http://download.oracle.com/glassfish/5.0.1/nightly/glassfish-5.0.1-b02-12_03_2018.zip
    wget http://central.maven.org/maven2/org/glassfish/grizzly/grizzly-npn-bootstrap/1.8.1/grizzly-npn-bootstrap-1.8.1.jar
    mv grizzly-npn-bootstrap-1.8.1.jar glassfish5/glassfish/modules/endorsed/grizzly-npn-bootstrap.jar
    jar uvf glassfish-5.0.1-b02-12_03_2018.zip glassfish5/glassfish/modules/endorsed/grizzly-npn-bootstrap.jar 
    echo "you have a patched archive for runnig with Java 8 patchlevel 191"
    
    cduran@cduran-VirtualBox:~/Documents$ jar -xvf grizzly-npn-bootstrap.jar 
     inflated: META-INF/MANIFEST.MF
      created: META-INF/
      created: META-INF/maven/
      created: META-INF/maven/org.glassfish.grizzly/
      created: META-INF/maven/org.glassfish.grizzly/grizzly-npn-bootstrap/
     inflated: META-INF/maven/org.glassfish.grizzly/grizzly-npn-bootstrap/pom.properties
     inflated: META-INF/maven/org.glassfish.grizzly/grizzly-npn-bootstrap/pom.xml
      created: org/
      created: org/glassfish/
      created: org/glassfish/grizzly/
      created: org/glassfish/grizzly/npn/
     inflated: org/glassfish/grizzly/npn/AlpnClientNegotiator.class
     inflated: org/glassfish/grizzly/npn/AlpnServerNegotiator.class
     inflated: org/glassfish/grizzly/npn/ClientSideNegotiator.class
     inflated: org/glassfish/grizzly/npn/NegotiationSupport.class
     inflated: org/glassfish/grizzly/npn/ServerSideNegotiator.class
      created: sun/
      created: sun/security/
      created: sun/security/ssl/
     inflated: sun/security/ssl/Alerts.class
     inflated: sun/security/ssl/AlpnExtension$Builder.class
     inflated: sun/security/ssl/AlpnExtension.class
     inflated: sun/security/ssl/ClientHandshaker$1.class
     inflated: sun/security/ssl/ClientHandshaker$2.class
     inflated: sun/security/ssl/ClientHandshaker.class
     inflated: sun/security/ssl/ExtensionType.class
     inflated: sun/security/ssl/GrizzlyNPN.class
     inflated: sun/security/ssl/HandshakeMessage$1.class
     inflated: sun/security/ssl/HandshakeMessage$CertificateMsg.class
     inflated: sun/security/ssl/HandshakeMessage$CertificateRequest.class
     inflated: sun/security/ssl/HandshakeMessage$CertificateVerify$1.class
     inflated: sun/security/ssl/HandshakeMessage$CertificateVerify.class
     inflated: sun/security/ssl/HandshakeMessage$ClientHello.class
     inflated: sun/security/ssl/HandshakeMessage$DH_ServerKeyExchange.class
     inflated: sun/security/ssl/HandshakeMessage$DistinguishedName.class
     inflated: sun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange.class
     inflated: sun/security/ssl/HandshakeMessage$Finished.class
     inflated: sun/security/ssl/HandshakeMessage$HelloRequest.class
     inflated: sun/security/ssl/HandshakeMessage$NextProtocol$Builder.class
     inflated: sun/security/ssl/HandshakeMessage$NextProtocol.class
     inflated: sun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange.class
     inflated: sun/security/ssl/HandshakeMessage$ServerHello.class
     inflated: sun/security/ssl/HandshakeMessage$ServerHelloDone.class
     inflated: sun/security/ssl/HandshakeMessage$ServerKeyExchange.class
     inflated: sun/security/ssl/HandshakeMessage.class
     inflated: sun/security/ssl/Handshaker$1.class
     inflated: sun/security/ssl/Handshaker$DelegatedTask.class
     inflated: sun/security/ssl/Handshaker.class
     inflated: sun/security/ssl/HelloExtensions.class
     inflated: sun/security/ssl/NextProtocolNegotiationExtension$Builder.class
     inflated: sun/security/ssl/NextProtocolNegotiationExtension.class
     inflated: sun/security/ssl/SSLEngineImpl.class
     inflated: sun/security/ssl/ServerHandshaker$1.class
     inflated: sun/security/ssl/ServerHandshaker$2.class
     inflated: sun/security/ssl/ServerHandshaker$3.class
     inflated: sun/security/ssl/ServerHandshaker.class
    
    
    cduran@cduran-VirtualBox:~/glassfish-5.0-web-profile/glassfish5/glassfish/modules/endorsed$ jar -xvf grizzly-npn-bootstrap.jar 
      created: META-INF/
     inflated: META-INF/MANIFEST.MF
      created: META-INF/maven/
      created: META-INF/maven/org.glassfish.grizzly/
      created: META-INF/maven/org.glassfish.grizzly/grizzly-npn-bootstrap/
     inflated: META-INF/maven/org.glassfish.grizzly/grizzly-npn-bootstrap/pom.properties
     inflated: META-INF/maven/org.glassfish.grizzly/grizzly-npn-bootstrap/pom.xml
      created: org/glassfish/
      created: org/glassfish/grizzly/
      created: org/glassfish/grizzly/npn/
     inflated: org/glassfish/grizzly/npn/ClientSideNegotiator.class
     inflated: org/glassfish/grizzly/npn/ServerSideNegotiator.class
     inflated: org/glassfish/grizzly/npn/AlpnClientNegotiator.class
     inflated: org/glassfish/grizzly/npn/NegotiationSupport.class
     inflated: org/glassfish/grizzly/npn/AlpnServerNegotiator.class