有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么Java Stripe API对receiveChangeCipherSpec()有异常NoSuchMethodError?

我在void linux上使用带Payara 5和OpenJDK的Stripe Java库版本5.41.0 [void@void ~]$ java -version openjdk version "1.8.0_202" OpenJDK Runtime Environment (build 1.8.0_202-b00) OpenJDK 64-Bit Server VM (build 25.202-b00, mixed mode)

我得到了receiveChangeCipherSpec的一个例外,如下所示:

java.lang.NoSuchMethodError: sun.security.ssl.Handshaker.receiveChangeCipherSpec()V
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1150)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
    at com.stripe.net.LiveStripeResponseGetter.makeURLConnectionRequest(LiveStripeResponseGetter.java:429)
    at com.stripe.net.LiveStripeResponseGetter.getStripeResponse(LiveStripeResponseGetter.java:582)
    at com.stripe.net.LiveStripeResponseGetter.rawRequest(LiveStripeResponseGetter.java:500)
    at com.stripe.net.LiveStripeResponseGetter.staticRequest(LiveStripeResponseGetter.java:526)
    at com.stripe.net.LiveStripeResponseGetter.request(LiveStripeResponseGetter.java:74)
    at com.stripe.net.APIResource.request(APIResource.java:186)

我认为这可能是因为缺乏无限的安全策略,但按照安装程序,我仍然有上述例外

尽管我正在进行的任何API调用都不起作用,但令人不快的代码是这一行:Customer.retrieve(stripeCustomerId)

升级Stripe库会解决这个问题吗,还是我错过了Payara的一个罐子或其他东西


共 (1) 个答案

  1. # 1 楼答案

    这个问题的答案与这里相同(sun.security.ssl.SSLSessionImpl not found)。总而言之,问题在于,这种方法确实是错误的,它应该更像是^{,因为,引用Antoine的话:

    帕亚拉/Glassfish embeds native sun.* classes into [glassfish5_home]/glassfish/modules/endorsed/grizzly-npn-bootstrap.jar, so it conflicts with others classes included into [JDK_HOME]/jre/lib/jsse.jar

    我使用了Antoine的解决方案,即打开grizzly-npn-bootstrap.jar并删除sun文件夹,这样它就不再冲突,并从jsse.jar加载正确的类

    在linux上,您可以使用Ark打开jar并直接删除,而在Windows上,您似乎可以使用7zip执行同样的操作。先做一个备份,以防将来需要回到原来的jar