在GAE中使用javapns时SSLSocketImpl.receivedChangeCipherSpec上的NoSuchMethodError异常

时间:2015-03-10 16:01:54

标签: google-app-engine javapns

我正在使用带有Google App Engine的javapns。一切都很好,直到今天早上。现在,它引发了这个例外:

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。不确定这是否相关。

2 个答案:

答案 0 :(得分:1)

我就此问题与Google支持小组联系并得到以下回复:

  

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

他们没有透露根本原因。

答案 1 :(得分:0)

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