我正在使用带有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。不确定这是否相关。
答案 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相匹配,您应该很好。