GCM服务器端运行时错误(NoClassDefFoundError:消息$ Builder)

时间:2016-08-06 06:43:10

标签: java google-cloud-messaging

这是GCM通知的服务器端代码,我已经使用命令行通过添加gcm-server.jar在ubuntu上成功构建了这个代码,但是在运行时它会因异常而崩溃。我在类路径中添加了jar。

  Exception at run time :  
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/android  /gcm/server/Message$Builder  
    at geo.sendNotification.sendNow(sendNotification.java:30)  
    at geo.geosense.main(geosense.java:27)  
Caused by: java.lang.ClassNotFoundException:   com.google.android.gcm.server.Message$Builder  
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)  
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)  
..

import org.json.simple.*;  
import java.util.*;  
import com.google.android.gcm.server.Message.Builder;  
import com.google.android.gcm.server.Message;  
import com.google.android.gcm.server.Sender;  
import com.google.android.gcm.server.Result;
import com.google.android.gcm.server.MulticastResult;  
public class sendNotification {  
Sender sender = null;  
public void sendNotification ()  // function to send message   
    {  
Sender sender = new Sender("XYZ"); // api key      
    }  
    public void sendNow(String deviceID, String msg, String param)  
    {  

    Message message = new Message.Builder()  
                    .addData("message", msg)  
                    .addData("parameter one", param)  
                    .build();  
    try{      
    Result result = sender.send(message, deviceID, 1);  
    }  
    catch ( Exception e )  
    {  
        e.printStackTrace();  
    }      
    }}  

____________________________________________________________________________

1 个答案:

答案 0 :(得分:0)

NoClassDefFoundError表示应用程序无法在Application的文件夹中找到该文件的位置。建议将所有库文件和jar文件保存在项目的libs文件夹中。

确保已将gcm.jar文件放在libs文件夹而不是lib文件夹中。

为此,请转到project properties> java build path> order and export然后勾选已添加的jar文件。

这是一张相关的SO票,讨论NoClassDefFoundErrorjava.lang.NoClassDefFoundError: com.google.android.gms.gcm.GoogleCloudMessaging