4

我正在将 javapns 与 Google App Engine 一起使用。直到今天早上一切都很好。现在,它引发了这个异常:

java.lang.NoSuchMethodError: sun.security.ssl.SSLSocketImpl.receivedChangeCipherSpec()Z
    at sun.security.ssl.Handshaker.receivedChangeCipherSpec(Handshaker.java:356)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:347)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1026)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1324)
    at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:712)
    at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
    at java.io.OutputStream.write(OutputStream.java:75)
    at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:402)
    at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:350)
    at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:320)
    at javapns.Push.sendPayload(Push.java:177)
    at javapns.Push.payload(Push.java:149)

任何想法?我在 JDK7u 中看到了缺少的方法,但我认为我正在使用 JDK7。不确定这是否相关。

4

2 回答 2

1

我就这个问题联系了谷歌支持并得到了以下回复:

这是一个已经解决的已知问题。

他们没有透露根本原因。

于 2015-03-10T23:41:00.437 回答
0

我试图使用 BigTable 客户端并遇到了同样的问题。这是由于 Google API 使用 HTTP2 和 TLS。用于支持 TLS 的 ALPN 库会在启动时修改字节码,并与您正在运行的 JRE/JDK 版本紧密耦合。检查http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html上的“版本”表,以将 ALPN 的特定版本与您的 JRE 相匹配,您应该很好。

于 2015-10-12T21:31:59.157 回答