1

https://developers.google.com/eclipse/docs/endpoints-addentitiesのサンプル チュートリアルに従おうとしていますが、GameEndpoint.Builderクラスを Eclipse 内で生成する方法を理解するのに苦労しています。

これに従い、説明に従ってクラウド エンドポイントを生成した後、GameEndpointクラスを作成しましたが、クラスはありませんGameEndpoint.Builder。だから明らかに私はこのエラーを持っています

GameEndpoint.Builder を型に解決できません

私はこの時点で困惑しています。GameEndpoint.BuilderEclipse 内でクラスを生成するにはどうすればよいですか? またはそれを妨げるものは何ですか?

コード

public class NewGameTask extends AsyncTask<Context, Integer, Long> {
    protected Long doInBackground(Context... contexts) {

        GameEndpoint.Builder endpointBuilder = new GameEndpoint.Builder(
                AndroidHttp.newCompatibleTransport(), new JacksonFactory(),
                new HttpRequestInitializer() {
                    public void initialize(HttpRequest httpRequest) {
                    }
                });
        GameEndpoint endpoint = CloudEndpointUtils.updateBuilder(
                endpointBuilder).build();
        try {
            Game game = new Game();
            game.setStart(Calendar.getInstance());

            Game result = endpoint.insertGame(game);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return (long) 0;
    }
}
4

3 に答える 3

2

Android Studio を使用しているGoogle I/O 2013のこのビデオを見て問題を解決しましたが、Eclipse とほとんど同じでした。

https://developers.google.com/eclipse/docs/endpoints-addentitiesに従う際の私の間違いは、エンティティ クラスをMyAppプロジェクトではなくMyApp-AppEngineプロジェクトに配置する必要があることでした。

それが混乱の元でした。将来的に役立つ場合に備えて、私が行ったことの簡単な内訳を以下に示します。

  • App Engine に追加するエンティティ クラスをMyApp - AppEngineプロジェクトに配置します。
  • クラスを右クリックし、[ Google ] > [ Cloud Endpoint Client Library の生成] に移動します
  • MyApp-AppEngineプロジェクトを右クリックし、 Google > Generate Cloud Enpoint Client Libraryに移動します
  • プロジェクトで使用するために参照するMyAppプロジェクトで新しい参照が作成されます。
于 2013-05-25T02:43:40.810 に答える
2

注:この回答は Android Studio に基づいていますが、Eclipse とほとんど同じであると確信しています。

私もこの問題を抱えていましたが、後で原因がわかりましたEndpoint。エンドポイント Api パッケージではなく、生成したクラスをインポートしていたことが判明しました。はっきりさせておきます。プロジェクトにエンドポイント モジュールを追加すると、エンドポイント パッケージにMyBeanMyEndpointクラスが含まれます。クライアントをバックエンドに接続するためのガイドを見ると、EndpointsAsyncTaskクラスは次を使用します。

private static MyApi myApiService = null;

どこから取得したのか疑問に思っていましたが、バックエンド ライブラリを確認する必要がありMyApiます。MyBean

ここに画像の説明を入力

マークされ1たライブラリは、前述のガイドに従って最初にプロジェクトに追加されたライブラリです。新しいクラスを追加しStudentてクラウド エンドポイント クラスを自動生成すると、2 つ目のライブラリも追加されました。

長くて退屈な話です。クラスではなく、このライブラリをインポートする必要があります。

import com.package-name.backend.studentApi.StudentApi;

そして、次を使用します。

private static StudentApi myApiService = null;
...
StudentApi.Builder builder = new StudentApi.Builder(...)

それ以外の:

import com.package-name.backend.StudentEndpoint;
 ...
private static StudentEndpoint myApiService = null;

StudentEndpoint.Builder builder = new StudentEndpoint.Builder(...)
于 2015-04-22T16:52:46.033 に答える
1

Android Studioでも同じ問題が発生しました。エンティティ Java Bean から Endpoint クラスを生成しましたが、AsyncTask を作成するときに Builder を取得する方法になりました。

実際 (私があなたのような Game Java Bean を使用する場合)、Builder は GameEndPoint ではなく、生成された GameApi クラスに依存します。

つまり、AsyncTask クラスに次の 2 つのインポートを追加する必要がありました。

com.examplepackage.backend.gameApi.GameApi をインポートします。com.examplepackage.backend.gameApi.model.Game をインポートします。

作成した Game Java Bean と生成された GameEndpoint は、パッケージ com.examplepackage.backend の下にあります。

于 2015-03-03T16:20:16.147 に答える