Почему Java Stripe API имеет исключение NoSuchMethodError для receiveChangeCipherSpec ()? - PullRequest
0 голосов
/ 15 января 2019

Я использую библиотеку Stripe Java версии 5.41.0 в void linux с Payara 5 и OpenJDK [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 Ответ

0 голосов
/ 15 января 2019

Ответ на этот вопрос тот же, что и здесь ( sun.security.ssl.SSLSessionImpl не найден ). Подводя итог, можно сказать, что проблема заключается в том, что исключение NoSuchMethod действительно ошибочно, оно должно быть больше похоже на duplicate classes found, поскольку, если процитировать Антуана из этого вопроса:

скумбриевидный гидролик / 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

Я использовал решение от Антуана, которое должно было открыть grizzly-npn-bootstrap.jar и удалить папку sun, чтобы она больше не конфликтовала и загружала правильные классы из jsse.jar.

В linux вы можете использовать Ark, чтобы открыть банку и удалить напрямую, и похоже, что в Windows вы можете сделать то же самое с 7zip. Сначала сделайте резервную копию на случай, если в будущем вам понадобится вернуться к исходному банку.

...