【问题标题】:Error Generating Client Libraries for Cloud Endpoints Frameworks 2.0为 Cloud Endpoints Frameworks 2.0 生成客户端库时出错
【发布时间】:2017-02-07 15:12:53
【问题描述】:

我正在构建一个Google App EngineFirebase 应用程序,我想使用Google cloud endpoints(第2 版)的最新功能,例如用户身份验证和支持Firebase 读/写,这是我的主要功能担心。

阅读官方文档后,我一直在生成客户端 API 库... 显然正如here 所述,它应该手动完成,因为Android Studio 目前不支持该功能(即使在更新了here 所述的相关文件之后)它会产生此错误:

错误:任务“:endpointVag:appengineEndpointsGetClientLibs”执行失败。 运行端点命令 get-client-lib 时出错:web.xml must have 1 (found:0) SystemServiceServlet servlet

按照here 的说明并运行此命令后:

C:\android_project_path\endpoints-framework-tools-2.0.0-beta.11\bin>endpoints-framework-tools.bat get-client-lib --war=C:\android_project_path\src\main\webapp -l java -bs gradle com.somename.project.endpoints.MyEndpoint

我收到以下错误:

Error: com.somename.project.endpoints.MyEndpoint

有什么建议或如何手动正确生成客户端库?

谢谢!

编辑,我附上我的 web.xml 的内容。

<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<servlet>
    <servlet-name>EndpointsServlet</servlet-name>
    <servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
    <init-param>
        <param-name>services</param-name>
        <param-value>com.somename.project.endpoints.MyEndpoint</param-value>
    </init-param>
    <init-param>
        <param-name>restricted</param-name>
        <param-value>false</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>EndpointsServlet</servlet-name>
    <url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

<filter>
    <filter-name>endpoints-api-configuration</filter-name>
    <filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
</filter>
<filter>
    <filter-name>endpoints-api-controller</filter-name>
    <filter-class>com.google.api.control.extensions.appengine.GoogleAppEngineControlFilter</filter-class>
    <init-param>
        <param-name>endpoints.projectId</param-name>
        <param-value>myproject</param-value>
    </init-param>
    <init-param>
        <param-name>endpoints.serviceName</param-name>
        <param-value>myproject.appspot.com</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>endpoints-api-configuration</filter-name>
    <servlet-name>EndpointsServlet</servlet-name>
</filter-mapping>
<filter-mapping>
    <filter-name>endpoints-api-controller</filter-name>
    <servlet-name>EndpointsServlet</servlet-name>
</filter-mapping>

【问题讨论】:

  • 你能发布你的 web.xml 吗?
  • @MichaelMeyer 按要求添加
  • 嗨,乔治。你可以试试 GA 版本的2.0.0 工具吗?这是你得到的唯一输出行吗?
  • 此问题的任何更新答案?版本 1 从 8 月 2 日起已弃用
  • @RafiqAhmad 假设您使用的是 windows 和 gradle,您可以导航到项目的主文件夹,最简单的方法是运行以下命令:gradlew endpointsClientLibs 您也可以参考最新的文档来自 Google 团队 here

标签: google-app-engine android-studio firebase google-cloud-endpoints


【解决方案1】:

看起来这是你的问题:

--war=C:\android_project_path\src\main\webapp

--war 参数必须指向已编译应用的展开 WAR 目录的根目录。您将其指向应用程序源的“webapp”文件夹。您会注意到您引用的示例 given in the docstarget/echo-1.0-SNAPSHOT

为了确保我已经在 Linux 和 Windows 系统上使用示例应用程序对此进行了测试(使用最新的endpoints-frameworks-toolsversion 2.0.3)并且客户端库的生成没有问题。

【讨论】:

  • 我通过 Android Studio 更改了 web.xml,但 gradle 自动运行并且构建失败(如预期的那样)。现在exploded-app 目录不见了……您能解释一下如何手动(通过cmd)构建后端而不恢复到端点版本1 吗? (如果没有其他方法,我将不得不恢复到端点 v1,使用 Android Studio 重新构建,然后更改分解目录中的 web.xml,这可能会起作用..)
  • 从头开始,我会将您的答案标记为正确,因为它使我能够走得更远,因为您的观察是正确的。我使用了android studio并禁用了导出、安装等客户端库的任务,然后运行创建explode-app文件夹的后端。从该点运行手动命令成功生成了库。
【解决方案2】:

能否请您替换条目

 <servlet-name>EndpointsServlet</servlet-name>

<servlet-name>SystemServiceServlet</servlet-name>

并尝试再次生成客户端库?

【讨论】:

  • 是的,但是根据这个 cloud.google.com/appengine/docs/java/endpoints/migrating> 这意味着我使用的是 1.0 版对吗?我想使用 Cloud Endpoints Java Framework 2.0 版。
  • 是的,正确的。所以我猜想生成客户端库的插件不支持版本 2。
  • 是的,似乎如上所述,这里的问题是为什么手动说明也会产生错误..
  • 最后一条评论:您是否尝试了不同的 beta 版本来生成客户端库?我可以看到您使用的是 beta 11,但在 cloud.google.com/endpoints/docs/frameworks/java/… 我可以看到他们使用的是 beta 7。
  • 感谢您的反馈 Michael,是的,我也尝试了不同的 beta 版本,但不幸的是无济于事。您是否尝试在 beta 7 中复制该问题并且成功了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 2017-01-18
  • 2014-05-03
相关资源
最近更新 更多