在过去的几周里,我一直在使用GAE/J和Google Cloud Endpoints开发应用程序开发一个应用程序。我创建了我的自定义端点(使用注释),虽然我遇到了很多问题,但我可以解决它们并且一切都运行得很好。
但是现在(22/04/2013)我尝试在端点方法中进行更改,突然Google Eclipse 插件不再生成客户端库了!
我试图从我的项目中删除所有生成的 api 文件,但没有任何效果。我什至再次下载了 Eclipse,安装了所有最新版本的 GPE 和 GAE SDK,并从头开始了一个新项目,但我遇到了同样的错误......
编辑:在尝试了一切之后,谷歌的结局似乎一定有问题。似乎 GPE 使用 a CloudClientLibGenerator
,至少在最后一次没有工作......
[ 75 小时 ... ]
现在我想知道:
- 如果他们在本地拥有所有必要的信息(代码、库等),为什么还需要云生成器来生成端点的代码?或者他们没有?
- 我正在使用 GAE 的免费版本,为大学开发一个应用程序(我的理学硕士最终项目),但如果我正在开发一个为 GAE 付费的真正应用程序怎么办?这是不是有点太粗制滥造了?
无论如何,我认为这个词是终止与端点的约会......
注意:我已经打开了这个问题在 Google Code 中
编辑:来自 Google 项目成员的回复:“目前普遍存在 Endpoints 问题,这会混淆任何当前或以前的库生成问题。我会在当前问题解决后进行更新。 ”
“我们正在努力尽快解决问题。一旦问题解决,我们将发布更新。 ”
更新:一些用户现在在上述问题中发表评论,指出问题已解决!不过,谷歌没有发表官方评论。不幸的是,我暂时无法检查它...
可能的解决方法:
您必须更改为以前的 GAE SDK 版本。1.7.5和1.7.6都在工作。您可以从这里下载 Java 版本。
我已经尝试过,端点库生成正在工作!!!还有开发服务器中的 APIs Explorer,所以我们可以在等待 bug 修复的同时继续开发,根据谷歌团队明天会发生什么......
突然间,我已经部署的端点无法正常工作,现在又开始工作了!(尽管客户端生成仍然无法与 SDK 1.7.7 一起使用)
编辑:来自谷歌,他们说命令行的生成也有效。
尝试生成客户端库时引发的异常的堆栈跟踪(在 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