2012-11-13 2 views
2

Google Cloud Messaging을 Eclipse에서 작동 시키려고했습니다. 데모 웹 페이지에서 주어진 예제를 컴파일하고 오류없이 실행할 수있었습니다. 그러나 저지를 사용하여 내 자신의 예제를 만들려고하면 다음 코드가 보낸 사람을 만들려고 할 때 "java.lang.NoClassDefFoundError : com/google/android/gcm/server/Sender"라는 런타임 오류가 발생합니다.GCM : java.lang.NoClassDefFoundError : co.kr/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 키를 api_key로 바꿨습니다. 튜토리얼에서 설명하는 개미 명령을 실행하여 데모를 작동시킬 수 있었기 때문에 작동한다는 것을 알았습니다. 또한 단지 모호성의 경우에 대비하여, 내가 얻는 오류는 서버 측이며, 안드로이드 장치와 관련이 없습니다. 나는 이미 시도

것 : 내 WEB-INF/lib 폴더에있는 GCM-server.jar을 포함했다

  1. 은 프로젝트 속성에서 나는 빌드 경로에 포함되어있다.
  2. 다른 사이트에서도 언급했듯이 jcm_simple-1.1.jar을 gcm-server.jar과 동일한 방법으로 포함 시키려고했습니다. 이것이이 오류에 어떤 영향을 미치는지는 모르겠지만 몇 가지 다른 장소에서 대답으로 나열된 것을 보았습니다.
  3. (솔루션) tomcat 서버를 삭제하고 새 것을 생성했습니다. 아마도 대신 프로젝트를 정리하고 동일한 결과를 얻을 수있었습니다.

데모 튜토리얼 링크 : http://developer.android.com/guide/google/gcm/demo.html.

답변

4

방금 ​​내 문제에 대한 해결책을 찾았습니다. 좌절감에서 나는 eclipse에서 오래된 Tomcat 서버를 삭제하고 새 Tomcat 서버를 만들었다. 프로젝트를 다시 실행했을 때 전혀 문제가 없었습니다. 처음 프로젝트를 시작할 때 jar 파일을 WEB-INF/lib에 넣은 다음 인터넷에서 많은 게시물을 읽은 후 gcm-server.jar을 빌드 경로에 추가했습니다. 이 동작으로 인해 문제가 해결 된 것으로 보이지만 변경 전부터 서버에 파일이 남아있는 것을 알 수없는 이유가 있습니다. 나는 나의 프로젝트를 청소하려고 노력해야했는데, 나는 그 문제에 대해 생각조차하지 않았다. 어쨌든, 나는이 게시물에 인터넷에서 찾을 수있는 모든 정보가 압축되어 있고 내 자신의 딜레마와 해결 방법이 포함되어 있기 때문에 이것이 누군가에게 도움이되기를 바랍니다.

+0

나는 똑같은 문제가 있지만 단순히 "깨끗한 해결책"이 도움이되지 못했습니다. 나는 Tomcat이 아닌 Jetty를 사용하고있다. gcm-server.jar이 참조되고 빌드 경로에 있습니다. gcm-server.jar이 실제로 배포되었는지 확인할 수 있도록 Jetty/Eclipse가 시작하기 전에 war 파일을 게시하는 위치는 누구나 알고 있습니까? – Nilzor

+1

업데이트 : 내 솔루션에 누락 된 ** json_simple-1.1.jar ** – Nilzor

+0

@Nilzor 당신은 푸 (fu)를 해결했습니다. 큰 미스터리! 정말 고맙습니다! 미친 친구 야! 당신은 저를 구합니다! \영형/ –

관련 문제