【问题标题】:Endpoint.Builder missing for generated cloud endpoint生成的云端点缺少 Endpoint.Builder
【发布时间】:2013-05-19 13:40:07
【问题描述】:

我正在尝试按照 https://developers.google.com/eclipse/docs/endpoints-addentities 的示例教程进行操作,但我一直在搞清楚如何在 Eclipse 中生成 GameEndpoint.Builder 类。

按照此操作并按照描述生成云端点后,我创建了一个 GameEndpoint 类,但没有 GameEndpoint.Builder 类。所以很明显我有这个错误

GameEndpoint.Builder 无法解析为类型

在这一点上我很难过。如何在 Eclipse 中生成 GameEndpoint.Builder 类,或者什么会阻止它?

代码

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;
    }
}

【问题讨论】:

    标签: android eclipse google-app-engine google-plugin-eclipse


    【解决方案1】:

    我在观看Google I/O 2013 的视频后发现了我的问题,该视频使用的是 Android Studio,但主要与 Eclipse 相同。

    我在关注https://developers.google.com/eclipse/docs/endpoints-addentities 时的错误是您需要将实体类放入 MyApp-AppEngine 项目,而不是您的 MyApp 项目。

    那是混乱的根源。如果它对未来的人有所帮助,这里是我所做的简短细分。

    • 将您要添加到 App Engine 的 Entity 类放入您的 MyApp-AppEngine 项目中。
    • 右键单击您的课程并转到 Google > 生成 Cloud Endpoint 客户端库
    • 右键单击您的 MyApp-AppEngine 项目并转到 Google > 生成 Cloud Enpoint 客户端库
    • 将在您的 MyApp 项目中创建新的引用,您在项目中引用这些引用以供使用。

    【讨论】:

      【解决方案2】:

      注意这个答案是基于Android Studio的,但肯定和Eclipse差不多。

      我也遇到了这个问题,但后来找到了原因。原来我正在导入我生成的 Endpoint 类而不是端点 Api 包。让我明确一点。当您将端点模块添加到项目中时,您会在端点包中获得MyBeanMyEndpoint 类。如果您查看guide 以将您的客户端连接到您的后端,EndpointsAsyncTask 类使用:

      private static MyApi myApiService = null;
      

      注意它是如何使用MyApi 而不是MyBean 现在我想知道它是从哪里得到的,但我只需要看看我的后端库:

      标记为1 的库是您按照前面提到的指南首次添加到您的项目中的库。当我添加一个新类 Student 并自动生成云端点类时,也添加了第二个库。

      长而无聊的短篇小说;您应该导入的是这个库而不是类。

      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(...)
      

      【讨论】:

        【解决方案3】:

        我在 Android Studio 中遇到了同样的问题。我从实体 java bean 生成了 Endpoint 类,但是在创建 AsyncTask 时,现在可以获取 Builder。

        实际上(如果我像你一样使用 Game java bean),Builder 并不依赖于 GameEndPoint,而是依赖于生成的 GameApi 类。

        换句话说,我必须在 AsyncTask 类中添加这两个导入:

        导入 com.examplepackage.backend.gameApi.GameApi; 导入 com.examplepackage.backend.gameApi.model.Game;

        而您编写的 Game java bean 和生成的 GameEndpoint 位于包 com.examplepackage.backend 下

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多