无法让 JavaPNS 用于推送通知

Posted

技术标签:

【中文标题】无法让 JavaPNS 用于推送通知【英文标题】:Can't get JavaPNS to work for Push notifications 【发布时间】:2012-05-31 20:21:32 【问题描述】:

好的,所以我正在为应用程序后端开发 Java 服务器,它必须能够作为更大代码库的一部分发布 ios 推送通知,所以我使用了 JavaPNS 库 (v2.1.1),它以前在服务器的 tomcat 版本上使用(并工作过)。我在 Arch Linux 上使用 Eclipse 进行本地开发。

我正在尝试最简单的测试:

try 
   Push.alert("Hello", "cert.p12", "password", false, "<my iPods UDID>");
catch(Exception e)
  e.printStackTrace();

结果异常是:

 Exception in thread "main" java.lang.NoClassDefFoundError:org/bouncycastle/jce/provider/BouncyCastleProvider
at javapns.notification.PushNotificationManager.initializeConnection(PushNotificationManager.java:107)
at javapns.Push.sendPayload(Push.java:171)
at javapns.Push.alert(Push.java:47)
at testIOS.main(testIOS.java:20)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more

证书文件在本地目录中(没有关于加载的投诉),密码和UDID都正确。我尝试了一些事情(可能是徒劳的),例如从 oracle 安装无限制策略 JCE: http://www.bouncycastle.org/wiki/display/JA1/Provider+Installation

但我真的不知道出了什么问题,它似乎无法找到那个类/库,但我真的不知道如何解决它。提前感谢您的任何提示。

【问题讨论】:

【参考方案1】:

你的库中有bcprov-jdk15-146.jar 吗? 如果没有,请从此链接下载 jar 并将其放入您的库中。

Bouncy Castle

【讨论】:

以上是关于无法让 JavaPNS 用于推送通知的主要内容,如果未能解决你的问题,请参考以下文章

将 javapns 用于推送通知提供程序/服务器

你如何设置 javapns(iOS 推送通知)?

iOS:使用 JavaPNS 从服务器发送的通知未到达

iOS:生产推送通知,来自 APNS 服务器的无效令牌

使用 Java 和 REST 发送 Apple 推送通知时出现问题

我无法让推送通知以警报或横幅形式出现