为 Cloud Endpoints Frameworks 2.0 生成客户端库时出错
Error Generating Client Libraries for Cloud Endpoints Frameworks 2.0
我正在构建 Google App Engine
应用程序以及 Firebase
,我想使用 Google cloud endpoints
(版本 2)的最新功能,例如用户身份验证和对 Firebase
read/writes 这是我最关心的问题。
阅读官方文档后,我一直在生成客户端 API 库...
显然如前所述 it should be done manually as Android Studio does not support the function at this moment (even after updating the relevant files as stated here) 它会产生此错误:
Error:Execution failed for task ':endpointVag:appengineEndpointsGetClientLibs'.
There was an error running endpoints command 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>
你能替换条目吗
<servlet-name>EndpointsServlet</servlet-name>
和
<servlet-name>SystemServiceServlet</servlet-name>
并再次尝试生成客户端库?
看来这是你的问题:
--war=C:\android_project_path\src\main\webapp
--war
参数必须指向已编译应用程序展开的 WAR 目录的根目录。您将其指向应用程序源的 'webapp' 文件夹。您会注意到您引用的示例 given in the docs 是 target/echo-1.0-SNAPSHOT
.
为了确保我已经在 Linux 和 Windows 系统(使用最新的 endpoints-frameworks-tools
version 2.0.3)和客户端库上使用示例应用程序对此进行了测试生成没有问题。
我正在构建 Google App Engine
应用程序以及 Firebase
,我想使用 Google cloud endpoints
(版本 2)的最新功能,例如用户身份验证和对 Firebase
read/writes 这是我最关心的问题。
阅读官方文档后,我一直在生成客户端 API 库...
显然如前所述
Error:Execution failed for task ':endpointVag:appengineEndpointsGetClientLibs'. There was an error running endpoints command 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>
你能替换条目吗
<servlet-name>EndpointsServlet</servlet-name>
和
<servlet-name>SystemServiceServlet</servlet-name>
并再次尝试生成客户端库?
看来这是你的问题:
--war=C:\android_project_path\src\main\webapp
--war
参数必须指向已编译应用程序展开的 WAR 目录的根目录。您将其指向应用程序源的 'webapp' 文件夹。您会注意到您引用的示例 given in the docs 是 target/echo-1.0-SNAPSHOT
.
为了确保我已经在 Linux 和 Windows 系统(使用最新的 endpoints-frameworks-tools
version 2.0.3)和客户端库上使用示例应用程序对此进行了测试生成没有问题。