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

时间:2012-11-13 04:06:25

标签: 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密钥。我知道它有效,因为我能够通过运行教程中解释的ant命令来使演示工作。另外,为了具体模糊,我得到的错误是服务器端,与android设备无关。

我已经尝试过的事情:

  1. 我已将gcm-server.jar包含在我的WEB-INF / lib文件夹中,并在项目属性下将其包含在构建路径中。
  2. 我也尝试过像其他网站上所提到的那样,包括json_simple-1.1.jar,就像我包含gcm-server.jar一样。我不知道这会如何影响这个错误,但我在几个不同的地方看到了这个答案。
  3. (解决方案)删除了tomcat服务器并创建了一个新服务器。我可能刚刚清理了项目并获得了相同的结果。
  4. 演示教程链接:http://developer.android.com/guide/google/gcm/demo.html

1 个答案:

答案 0 :(得分:4)

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