"未检测到端点类。"在尝试构建Google Cloud Endpoints项目时

时间:2013-11-14 14:54:16

标签: java google-app-engine maven google-cloud-endpoints

我正在使用Maven跟踪使用Java的Google Cloud Endpoints的Getting Started guide,我无法使用API​​ Explorer访问我的终端。

在大多数情况下,我都遵循了指南,尽管我在项目中添加了一些结构。我的根项目包是com.ryanharter.devinfo,我的端点位于com.ryanharter.devinfo.spi包中,而我的模型类位于com.ryanharter.devinfo.beans(这是以移动后端启动器为模型)。

我已经编写了我的Endpoints类并对其进行了注释:

@Api(name = "deviceinfo", 
     version = "v1",
     namespace = @ApiNamespace(
        ownerDomain = "ryanharter.com",
        ownerName = "ryanharter.com", 
        packagePath = "devinfo")
     )
public class DeviceInfoV1 {

    @ApiMethod(name = "list", path = "devices", httpMethod = HttpMethod.GET)
    public DeviceListDto list(QueryDto query) {
        ...
    }

    ...

}

所有这一切似乎都很好,并且与我拥有的其他工作项目相匹配,但是当我运行开发服务器时,我得到一个空白屏幕。

我也注意到我的maven日志显示了这个:

[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ devinfo ---
[INFO] Compiling 8 source files to /path/to/devinfo/target/classes
[INFO] 
[INFO] --- appengine-maven-plugin:1.8.7:endpoints_get_discovery_doc (default) @ devinfo ---
[INFO] 
[INFO] Google App Engine Java SDK - get endpoints discovery doc...
[INFO] No Endpoints classes detected.

我看到“没有检测到端点类”。我还注意到/path/to/devinfo/target/classes是空的。

除了包装结构和课程内容之外,据我所知,我已遵循上面链接的指南。

修改

回应Dan,这是我的web.xml文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<web-app
        version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

</web-app>

根据上面链接的文档,我没有碰过这个。这正是Maven原型所产生的。我在网上看到有必要在web.xml中手动映射我的端点,但是文档没有说明这一点,所以我假设一个maven目标将会为我处理这个问题。

1 个答案:

答案 0 :(得分:0)

我不相信Maven会处理web.xml中的映射,抱歉。

你能尝试一下以下几点:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.google.devrel.samples.helloendpoints.Greetings,com.google.devrel.samples.helloendpoints.FooBar</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

在文件中使用您自己的类代替com.google.devrel.samples.helloendpoints.Greetingscom.google.devrel.samples.helloendpoints.FooBar

这将使用处理传入请求的servlet注册您的API类。