这是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();
}
}}
____________________________________________________________________________
答案 0 :(得分:0)
NoClassDefFoundError
表示应用程序无法在Application的文件夹中找到该文件的位置。建议将所有库文件和jar文件保存在项目的libs
文件夹中。
确保已将gcm.jar文件放在libs
文件夹而不是lib
文件夹中。
为此,请转到project properties
> java build path
> order and export
然后勾选已添加的jar文件。
这是一张相关的SO票,讨论NoClassDefFoundError
:java.lang.NoClassDefFoundError: com.google.android.gms.gcm.GoogleCloudMessaging