【问题标题】:error when generating cloud endpoints java client lib: "'JavaApi' object has no attribute '_class_name'"生成云端点 java 客户端库时出错:“'JavaApi' 对象没有属性 '_class_name'”
【发布时间】:2013-10-02 22:12:03
【问题描述】:

我是谷歌云端点的新手。我有一个使用一个端点和一种方法在服务器端工作的基本项目。我可以从 API Explorer 成功执行该方法。

所以现在我想生成一个用于 Android 应用程序的客户端库。当我跑步时

mvn appengine:endpoints_get_client_lib

我得到下面的错误输出。有趣的是它说“'JavaApi'对象没有属性'_class_name'”。我不确定它在这里指的是什么;我的代码中没有任何名为“JavaApi”的东西,所以它必须是一些中间生成的代码。

有什么想法吗?

[INFO] --- appengine-maven-plugin:1.8.3:endpoints_get_client_lib (default-cli) @ web-service-public ---

[信息]

[INFO] Google App Engine Java SDK - 生成端点获取客户端库

[INFO] 使用类名:com.getfitivity.webservice.pub.resource.TrainingProgramResource

[INFO] 执行端点 Command=[get-client-lib, -cp, C:\Users\Andy\Dev\projects\fitivity\fitivity-service\web-service-public\target\classes;C:\ Users\Andy\Dev\projects\fitivity\fitivity-service\web-service-public\target/classes;C:\Users\Andy.m2\repository\com\getfitivity\web-service-common\1.0-SNAPSHOT\web -service-common-1.0-SNAPSHOT.jar;C:\Users\Andy.m2\repository\com\google\appengine\appengine-api-1.0-sdk\1.8.3\appengine-api-1.0-sdk-1.8。 3.jar;C:\Users\Andy.m2\repository\com\google\appengine\appengine-endpoints\1.8.3\appengine-endpoints-1.8.3.jar;C:\Users\Andy.m2\repository\ javax\inject\javax.inject\1\javax.inject-1.jar, -o, C:\Users\Andy\Dev\projects\fitivity\fitivity-service\web-service-public\target/generated-sources/ appengine-endpoints/WEB-INF, -w, C:\Users\Andy\Dev\projects\fitivity\fitivity-service\web-service-public\target/generated-sources/appengine-endpoints, -l, java, com .getfitivity.webservice.pub.resource.TrainingProgramResource] 2013 年 10 月 2 日下午 5:59:47 com.google.apphosting.utils.config.AppEngineWebXmlReader 读取AppEngineWebXml

INFO:成功处理 C:\Users\Andy\Dev\projects\fitivity\fitivity-service\web-service-public\target/generated-sources/appengine-endpoints\WEB-INF/appengine-web.xml API 配置写入 C:\Users\Andy\Dev\projects\fitivity\fitivity-service\web-service-public\target\generated-sources\appengine-endpoints\WEB-INF/public-v1.api API 发现文档写入 ./public-v1-rest.discovery

[错误] com.google.appengine.repackaged.com.google.api.client.http.HttpResponseException: 500 内部服务器错误

{"error": {"message": "Internal Server Error", "code": 500, "errors": [{"message": "unknown exception", "debug_info": "'JavaApi' 对象有没有属性'_class_name'"}]}}

在 com.google.appengine.repackaged.com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1050) 在 com.google.api.server.spi.tools.CloudClientLibGenerator.postRequest(CloudClientLibGenerator.java:53) 在 com.google.api.server.spi.tools.CloudClientLibGenerator.generateClientLib(CloudClientLibGenerator.java:44) 在 com.google.api.server.spi.tools.GenClientLibAction.genClientLib(GenClientLibAction.java:67) 在 com.google.api.server.spi.tools.GetClientLibAction.getClientLib(GetClientLibAction.java:79) 在 com.google.api.server.spi.tools.GetClientLibAction.execute(GetClientLibAction.java:55) 在 com.google.api.server.spi.tools.EndpointsTool.execute(EndpointsTool.java:67) 在 com.google.api.server.spi.tools.EndpointsTool.main(EndpointsTool.java:93) 在 com.google.appengine.endpoints.EndpointsMojo.executeEndpointsCommand(EndpointsMojo.java:91) 在 com.google.appengine.endpoints.EndpointsGetClientLib.execute(EndpointsGetClientLib.java:55)

[...省略了无意义的堆栈级别...]

【问题讨论】:

    标签: google-cloud-endpoints


    【解决方案1】:

    想通了。问题是我的 API 名称,如

    @Api(name = "foo")
    

    是一个 java 关键字(在我的例子中是“public”,因为我定义了一个公共 Web 服务 API,而不是一个管理的、内部使用的 API)。

    我尝试了一些其他的 java 关键字,如“private”、“static”、“for”和“switch”,得到了同样的错误。

    【讨论】:

      【解决方案2】:

      更新您的 pom.xml 文件以使用 1.8.4 版插件并尝试运行

      mvn clean install appengine:endpoints_get_client_lib 进行全面重建。

      【讨论】:

      • 我第一次遇到问题时是在 1.8.4 上。我升级到 1.8.5,但没有帮助,然后我降级到 1.8.3,但也没有帮助。相同的症状。
      猜你喜欢
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 2018-05-23
      相关资源
      最近更新 更多