2

私はGoogleCloudMessagingをEclipseで動作させることを試みてきました。私は彼らのデモウェブページで与えられた例をコンパイルし、エラーなしでそれを実行することができました。ただし、ジャージを使用して独自の例を作成しようとすると、次のコードで送信者を作成しようとすると、実行時エラー「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キーをapi_keyに置き換えました。チュートリアルで説明されているantコマンドを実行することでデモを機能させることができたので、機能することはわかっています。また、あいまいな場合に備えて、私が得ているエラーはサーバー側であり、Androidデバイスとは何の関係もありません。

私がすでに試したこと:

  1. gcm-server.jarをWEB-INF/libフォルダーに含め、プロジェクトのプロパティの下でビルドパスに含めました。
  2. また、他のサイトで言及されているように、gcm-server.jarを含めたのと同じ方法でjson_simple-1.1.jarを含めようとしました。これがこのエラーにどのように影響するかはわかりませんが、いくつかの異なる場所でこれが回答としてリストされているのを見ました。
  3. (解決策) Tomcatサーバーを削除し、新しいサーバーを作成しました。代わりにプロジェクトをクリーンアップしただけで、同じ結果が得られた可能性があります。

デモチュートリアルリンク:http ://developer.android.com/guide/google/gcm/demo.html 。

4

1 に答える 1

4

問題の解決策を見つけました。欲求不満で、私は古いTomcatサーバーをEclipseから削除し、新しいサーバーを作成しました。プロジェクトを再度実行したとき、まったく問題はありませんでした。プロジェクトを最初にセットアップしたとき、jarファイルをWEB-INF / libに含め、その後、インターネット上の多くの投稿を読んだ後、ビルドパスにgcm-server.jarを追加しました。このアクションで修正されたようですが、何らかの理由で、変更前のサーバーにファイルが残っていました。私は自分のプロジェクトをきれいにすることを試みるべきでしたが、それが問題であるとさえ考えていませんでした。とにかく、これが誰かに役立つことを願っています。インターネットで見つけたすべての情報をこの投稿に凝縮し、自分自身のジレンマと解決策を含めたからです。

于 2012-11-13T08:09:46.163 に答える