Не удается запустить приложение на Google App Engine после перехода на V2.0 - PullRequest
0 голосов
/ 23 сентября 2018

Я только что перешел на новый Google Endpoint Framework V2.0.Я выполнил все шаги и успешно смог развернуть свое приложение как на локальном хосте, так и на App Engine.Но когда я пытаюсь получить доступ к методам API, я получаю следующие ошибки:

В Localhost:

[INFO] GCLOUD: java.lang.ClassNotFoundException: 
com.asr.trending.TrendsEndpoints
[INFO] GCLOUD:  atjava.net.URLClassLoader.findClass(URLClassLoader.java:381)
[INFO] GCLOUD:  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[INFO] GCLOUD:  at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:239)
[INFO] GCLOUD:  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[INFO] GCLOUD:  at java.lang.Class.forName0(Native Method)
[INFO] GCLOUD:  at java.lang.Class.forName(Class.java:348)
[INFO] GCLOUD:  at com.google.api.server.spi.ServletInitializationParameters.getClassForName(ServletInitializationParameters.java:224)
[INFO] GCLOUD:  at com.google.api.server.spi.ServletInitializationParameters.fromServletConfig(ServletInitializationParameters.java:180)
[INFO] GCLOUD:  at com.google.api.server.spi.EndpointsServlet.init(EndpointsServlet.java:56)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:643)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:499)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHolder.ensureInstance(ServletHolder.java:791)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:776)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:579)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
[INFO] GCLOUD:  at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
[INFO] GCLOUD:  at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
[INFO] GCLOUD:  at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
[INFO] GCLOUD:  at com.google.appengine.tools.development.jetty9.DevAppEngineWebAppContext.doScope(DevAppEngineWebAppContext.java:94)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
[INFO] GCLOUD:  at com.google.appengine.tools.development.jetty9.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:601)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
[INFO] GCLOUD:  at org.eclipse.jetty.server.Server.handle(Server.java:534)
[INFO] GCLOUD:  at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
[INFO] GCLOUD:  at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
[INFO] GCLOUD:  at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
[INFO] GCLOUD:  at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
[INFO] GCLOUD:  at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
[INFO] GCLOUD:  at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
[INFO] GCLOUD:  at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
[INFO] GCLOUD:  at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
[INFO] GCLOUD:  at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
[INFO] GCLOUD:  at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
[INFO] GCLOUD:  at java.lang.Thread.run(Thread.java:745)
[INFO] GCLOUD:

В App Engine (проверено журналы):

    org.eclipse.jetty.servlet.ServletHandler doHandle:  (ServletHandler.java:624)
org.eclipse.jetty.servlet.ServletHolder$1: java.lang.ClassNotFoundException: com.asr.trending.TrendsEndpoints
    at org.eclipse.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:597)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:654)
    at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:499)
    at org.eclipse.jetty.servlet.ServletHolder.ensureInstance(ServletHolder.java:791)
    at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:776)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:579)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at com.google.apphosting.runtime.jetty9.ParseBlobUploadHandler.handle(ParseBlobUploadHandler.java:120)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182)
    at com.google.apphosting.runtime.jetty9.AppEngineWebAppContext.doHandle(AppEngineWebAppContext.java:171)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:297)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:539)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
    at com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:202)
    at com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81)
    at com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:692)
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:654)
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:624)
    at com.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:818)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:274)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.asr.trending.TrendsEndpoints
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at com.google.apphosting.runtime.ApplicationClassLoader.findClass(ApplicationClassLoader.java:135)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:349)
    at com.google.api.server.spi.ServletInitializationParameters.getClassForName(ServletInitializationParameters.java:224)
    at com.google.api.server.spi.ServletInitializationParameters.fromServletConfig(ServletInitializationParameters.java:180)
    at com.google.api.server.spi.EndpointsServlet.init(EndpointsServlet.java:56)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:643)
    ... 29 more

По сути, они оба говорят, что класс не найден.Я строю и упаковываю все.Я смотрел на другие посты SO, пытаясь следовать за ними, но ни у одной не было этой проблемы.

Вот мой pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>
    <version>2.0-SNAPSHOT</version>

    <groupId>com.asr.trends</groupId>
    <artifactId>trends</artifactId>

    <properties>
        <appengine.app.version>2</appengine.app.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <prerequisites>
        <maven>3.1.0</maven>
    </prerequisites>

    <dependencies>
        <!-- Compile/runtime dependencies -->
        <dependency>
            <groupId>com.google.endpoints</groupId>
            <artifactId>endpoints-framework</artifactId>
            <version>2.1.2</version>
        </dependency>
        <!--
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>1.9.64</version>
        </dependency>
        -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <!-- Test Dependencies -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- Twitter Api -->
        <dependency>
           <groupId>org.twitter4j</groupId>
           <artifactId>twitter4j-core</artifactId>
           <version>[4.0,)</version>
        </dependency>

        <!-- Google Apis -->
        <dependency>
            <groupId>com.google.api-client</groupId>
            <artifactId>google-api-client</artifactId>
            <version>1.23.0</version>
        </dependency>

        <!-- Youtube Api -->
        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-youtube</artifactId>
            <version>v3-rev204-1.23.0</version>
        </dependency>

        <!-- Spring dependency -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.8.RELEASE</version>
            <scope>test</scope>
        </dependency>


        <!-- Jackson dependency -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.6</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.6</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
        </dependency>

    </dependencies>

    <build>
        <!-- for hot reload of the web application-->
        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
        <plugins>
            <!-- [START appengine-plugin] -->
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <!-- deploy configuration -->
                </configuration>
            </plugin>
            <!-- [END appengine-plugin] -->
            <!-- [START endpoints-frameworks-plugin] -->
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>endpoints-framework-maven-plugin</artifactId>
                <version>1.0.2</version>
                <configuration>
                    <!-- plugin configuration -->
                    <hostname>trend-ing.appspot.com</hostname>
                </configuration>
            </plugin>
            <!-- [END endpoints-frameworks-plugin] -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>display-dependency-updates</goal>
                            <goal>display-plugin-updates</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Вот мой 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>EndpointsServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.asr.trending.TrendsEndpoints</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>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>all</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
</web-app>

Я перепробовал все за последнюю 1 неделю.Теперь мне просто хочется отказаться от Google Cloud и перейти на Heroku.Делая последнюю попытку здесь.Любая помощь будет оценена.

...