2012-10-13 68 views
2

我正在使用一個簡單的Servlet來發送推送通知給Android設備。這裏爲發送該消息的代碼部分:爲什麼tomcat 7無法從WEB-INF/lib加載gcm-server.jar?

Sender sender = new Sender(API_KEY); 
ArrayList<String> devicesList = new ArrayList<String>(); 
devicesList.add(regID1); 
devicesList.add(regID2); 
devicesList.add(regID3); 

Message message = new Message.Builder() 
.collapseKey("1") 
.timeToLive(3) 
.delayWhileIdle(true) 
.addData("message", 
     "Hello!!!") 
.build(); 

MulticastResult result = sender.send(message, devicesList, 1); 
sender.send(message, devicesList, 1); 

沒有什麼錯在編譯的時候,但是當我在我的本地運行的servlet的異常被拋出 - 一個ClassNotFound的異常:

java.lang.ClassNotFoundException: com.google.android.gcm.server.Sender 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 
at servlet.PostServlet.doGet(PostServlet.java:48) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

我猜測發生這種情況是因爲tomcat無法加載gcm-server.jar中的類。但是,我已經將它放在WEB-INF/lib中並設置了類路徑。你有什麼想法?

謝謝。

回答