1

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

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

mvn appengine:endpoints_get_client_lib

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

有任何想法吗?

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

[信息]

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

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

[信息] 执行端点命令=[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] Oct 02 , 2013 下午 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 内部服务器错误

{“错误”:{“消息”:“内部服务器错误”,“代码”:500,“错误”:[{“消息”:“未知异常”,“调试信息”:“'JavaApi'对象没有属性' _班级名称'”}]}}

在 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)

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

4

2 回答 2

4

弄清楚了。问题是我的 API 名称,如

@Api(name = "foo")

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

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

于 2013-10-03T00:09:31.217 回答
1

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

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

于 2013-10-02T22:38:02.373 回答