jersey - GCM : java. lang.NoClassDefFoundError:com/google/android/gcm/server/Sender

标签 jersey noclassdeffounderror google-cloud-messaging

我一直在尝试让 Google Cloud Messaging 在 Eclipse 中工作。我能够编译他们的演示网页上给出的示例并运行它,没有任何错误;但是,当我尝试使用 jersey 创建自己的示例时,当以下代码尝试创建发件人时,我收到运行时错误“java.lang.NoClassDefFoundError:com/google/android/gcm/server/Sender”。

@POST
@Path("/send")
public Response sendMessage() throws IOException
{
    Sender sender = new Sender("api_key");
    Message message = new Message.Builder().build();
    sender.send(message, DataStore.getDevices(), 5);
    return Response.status(200).entity("Success").build();
}

注意:我已将真实的 api key 替换为 api_key。我知道它有效,因为我能够通过运行教程中解释的 ant 命令来使演示工作。另外,为了避免歧义,我得到的错误是服务器端的,与 Android 设备无关。

我已经尝试过的事情:

  1. 我已将 gcm-server.jar 包含在 WEB-INF/lib 文件夹中,并在项目属性下将其包含在构建路径中。
  2. 正如其他网站上提到的,我也尝试过以包含 gcm-server.jar 的方式包含 json_simple-1.1.jar。我不知道这会如何影响此错误,但我在几个不同的地方看到这被列为答案。
  3. (解决方案)删除了 tomcat 服务器并创建了一个新服务器。我可能只需清理该项目即可获得相同的结果。

演示教程链接:http://developer.android.com/guide/google/gcm/demo.html .

最佳答案

我刚刚找到了解决问题的方法。无奈之下,我从 eclipse 中删除了旧的 Tomcat 服务器并创建了一个新服务器。当我再次运行该项目时,完全没有任何问题。当我第一次设置项目时,我将 jar 文件包含在 WEB-INF/lib 中,后来在阅读了互联网上的大量帖子后,将 gcm-server.jar 添加到构建路径中。看来此操作可以修复它,但由于某种我不知道的原因,服务器上在更改之前留下了一些文件。我应该尝试清理我的项目,但我什至没有想到这是问题所在。无论如何,我希望这对某人有所帮助,因为我已经将在互联网上找到的所有信息浓缩到这篇文章中,并包含了我自己的困境和解决方案。

关于jersey - GCM : java. lang.NoClassDefFoundError:com/google/android/gcm/server/Sender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355446/

相关文章:

java - 如何将 android 客户端注册 token 发送到 FCM 服务器?

java - SpringBoot WebService客户端: MultipartFile and String parameters

json - Jersey 调用以对象作为参数的 get 不起作用

java - JAX-RS Jersey JSON GET HTTP 状态 500 内部服务器错误

hibernate - java.lang.NoClassDefFoundError : org/springframework/beans/factory/NoUniqueBeanDefinitionException

java - 无法通过命令行编译Java代码

android - Cloud Console 中缺少移动后端启动器

android - 如果设备收到来自 fcm 的推送通知,如何向处于终止状态的 android 应用程序显示/通信/广播消息

rest - 访问图像文件夹tomcat 9

java - 运行android项目时出现NoClassDefFoundError