生成谷歌云端点客户端库时出错

Posted

技术标签:

【中文标题】生成谷歌云端点客户端库时出错【英文标题】:Error generating google cloud endpoint client libraries 【发布时间】:2013-04-15 23:57:54 【问题描述】:

在过去的几周里,我一直在使用 GAE/JGoogle Cloud Endpoints 开发应用程序。我创建了我的自定义端点(使用注释),虽然我遇到了很多问题,但我可以解决它们并且一切都很好。

但是现在 (22/04/2013) 我尝试在端点方法中进行更改,突然 Google Eclipse 插件 不再生成客户端库了!

我试图从我的项目中删除所有生成的 api 文件,但没有任何效果。我什至再次下载了 Eclipse,安装了所有最新版本的 GPE 和 GAE SDK,并从头开始了一个新项目,但我遇到了同样的错误......


EDIT:在尝试了绝对EVERYTHING之后,看来Google的端肯定有问题。似乎 GPE 使用了CloudClientLibGenerator,至少在最近一段时间内它没有工作......

[ 75 小时 ... ]

现在我想知道:

    如果他们在本地拥有所有必要的信息(代码、库等),为什么还需要云生成器来生成端点代码?还是没有? 我正在使用 GAE 的免费版,为大学开发一个应用程序(我的硕士毕业项目),但如果我正在开发一个为 GAE 付费的真正应用程序怎么办?是不是有点太粗制滥造

无论如何,我认为这个词是 dis-end-ppointment with Endpoints...


注意:我在 Google 代码中打开了this issue

编辑来自 Google 项目成员的回复:“目前普遍存在 Endpoints 问题,它混淆了当前或之前的库生成问题。当前问题解决后我会更新。"

我们正在努力尽快解决问题。一旦问题解决,我们将发布更新。

更新:一些用户现在在上面的问题中发布 cmets 指出问题已解决!不过,谷歌没有发表官方评论。不幸的是,我暂时无法检查...


可能的解决方法:

您必须更改为以前的 GAE SDK 版本1.7.51.7.6 都在工作。您可以从here下载Java版本。

我已经尝试过了,端点库生成正在运行!!!还有开发服务器中的 APIs Explorer,所以我们可以在等待错误修复的同时继续开发,根据 Google 团队的说法,明天会发生什么......

突然间,我已经部署的端点无法正常工作,现在又开始工作了! (尽管客户端生成仍然无法与 SDK 1.7.7 一起使用)

编辑:来自 Google,他们说从命令行生成也可以正常工作。


尝试生成客户端库时抛出的异常堆栈跟踪(在 GPE 错误日志中):

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.google.gdt.eclipse.appengine.swarm.wizards.helpers.SwarmApiCreator.createClientLibFromApiConfig(SwarmApiCreator.java:121)
    at com.google.gdt.eclipse.appengine.swarm.wizards.helpers.SwarmApiCreator.createSwarmApi(SwarmApiCreator.java:242)
    at com.google.gdt.eclipse.appengine.swarm.wizards.helpers.SwarmServiceCreator.create(SwarmServiceCreator.java:364)
    at com.google.gdt.eclipse.appengine.swarm.wizards.GenerateSwarmApiAction$1.run(GenerateSwarmApiAction.java:84)
    at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
    at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
    at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
    at com.google.gdt.eclipse.appengine.swarm.wizards.GenerateSwarmApiAction.run(GenerateSwarmApiAction.java:80)
    at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
    at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
    at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
Caused by: com.google.appengine.repackaged.com.google.api.client.http.HttpResponseException: 400 Bad Request
"error": "message": "Bad Request", "code": 400, "errors": ["message": "api error", "debug_info": "Could not parse api"]
    at com.google.appengine.repackaged.com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1155)
    at com.google.api.server.spi.tools.CloudClientLibGenerator.postRequest(CloudClientLibGenerator.java:52)
    at com.google.api.server.spi.tools.CloudClientLibGenerator.generateClientLib(CloudClientLibGenerator.java:43)
    ... 41 more

【问题讨论】:

我也有同样的问题。谷歌的问题是,在使用他们的任何“实验性 API”时,你永远不能过于小心/信任。他们在没有任何通知或线索的情况下改变和打破。一次又一次地发生在我身上。 :-( 有没有人尝试过命令行生成云端点库的方法? developers.google.com/appengine/docs/java/endpoints/gen_clients 其实我没有,但我不认为它会做任何改变,因为毕竟生成过程应该是相同的,无论是从命令行调用还是从GPE,对吧?而且,谷歌项目成员的评论并没有让我觉得暂时有什么解决办法,而是等待...... 是的,你是对的。甚至我的应用程序 api 资源管理器也没有响应。 developers.google.com/apis-explorer/?base=https://… 没错,我已经编辑过了。到目前为止,至少我可以访问我的 edpoints ......这真是太棒了!我需要尽快修复它......暂时我想忘记这种情况,所以我要去观看冠军联赛;) 【参考方案1】:

现在 GPE 3.2.3 和服务端已修复此问题。您现在可以使用 App Engine 1.7.7。

还有一个问题:

https://code.google.com/p/google-plugin-for-eclipse/issues/detail?id=191

而且会在周一修复。

【讨论】:

这个bug的状态现在也是“修复”了。【参考方案2】:

我也有同样的问题。似乎还没有修复。它开始突然发生。昨天我能够很好地生成云端点客户端库。但现在,没有。甚至创建一个新的模板项目也会出现错误。所以从错误中猜测,它看起来是谷歌的问题。

已记录一个未解决的问题: https://code.google.com/p/googleappengine/issues/detail?id=9180

【讨论】:

感谢@Phil 提供的信息。是的,这也是我的猜测……至少已经 12 小时了,我需要修复它!我将在谷歌代码中检查问题... 我讨厌迂腐,但我认为这可能是对问题的评论,而不是答案。

以上是关于生成谷歌云端点客户端库时出错的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云 pubsub node.js 客户端与谷歌云功能不兼容

谷歌云存储 - 客户端机密

将 blobstore 与谷歌云端点和安卓一起使用

将消息推送到谷歌云发布订阅后如何返回对 webflux 端点的响应?

GCM(谷歌云推送)客户端服务器端开发全指南(客户端)

GCM(谷歌云推送)客户端服务器端开发全指南(客户端)