【问题标题】:Error while generating Open API for my API为我的 API 生成 Open API 时出错
【发布时间】:2020-03-25 23:08:54
【问题描述】:

我有一个应用引擎项目,该项目有一个 Api 类要部署在 Google 应用引擎中, 当我执行这些行为开放 API 创建 JSON 文件时,它给了我以下构建错误:

mvn 清洁包
mvn endpoints-framework:openApiDocs

[ERROR] 未能执行目标 com.google.cloud.tools:endpoints-framework-maven-plugin:1.0.2:openApiDocs (default-cli) 项目 Harmonica-API:执行目标的默认 cli com.google.cloud.tools:endpoints-framework-maven-plugin:1.0.2:openApiDocs 失败:执行时遇到 API 不兼容 com.google.cloud.tools:endpoints-framework-maven-plugin:1.0.2:openApiDocs: java.lang.NoSuchMethodError: com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient$Builder.setBatchPath(Ljava/lang/String;)Lcom/google/api/client/googleapis/services/AbstractGoogleClient$Builder;

在下面找到我在 POM.xml 文件中的依赖项

    <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-framework</artifactId>
        <version>2.2.1</version>
    </dependency>


    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>


    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
    </dependency>

    <dependency>
        <groupId>Harmonica-DAOs</groupId>
        <artifactId>Harmonica-DAOs</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>com.sendgrid</groupId>
        <artifactId>sendgrid-java</artifactId>
        <version>4.1.0</version>
    </dependency>

    <dependency>
        <groupId>net.htmlparser.jericho</groupId>
        <artifactId>jericho-html</artifactId>
        <version>3.4</version>
    </dependency>

    <dependency>
      <groupId>com.google.endpoints</groupId>
      <artifactId>endpoints-management-control-appengine-all</artifactId>
      <version>1.0.11</version>
    </dependency>

下面是DAO项目的POM:

    <dependency>
        <groupId>com.restfb</groupId>
        <artifactId>restfb</artifactId>
        <version>2.12.0</version>
    </dependency>

    <dependency>
        <groupId>com.nimbusds</groupId>
        <artifactId>nimbus-jose-jwt</artifactId>
        <version>4.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.0</version>
    </dependency>

    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-1.0-sdk</artifactId>
        <version>${appengine.target.version}</version>
    </dependency>

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa</artifactId>
        <version>2.7.0</version>
        <!-- <exclusions> -->
        <!-- <exclusion> -->
        <!-- <groupId>org.eclipse.persistence</groupId> -->
        <!-- <artifactId>javax.persistence</artifactId> -->
        <!-- </exclusion> -->
        <!-- </exclusions> -->

    </dependency>

    <dependency>
        <groupId>javax.json</groupId>
        <artifactId>javax.json-api</artifactId>
        <version>1.0</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.0</version>
    </dependency>

    <dependency>
        <groupId>net.minidev</groupId>
        <artifactId>json-smart</artifactId>
        <version>1.0.6.3</version>
    </dependency>

    <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>5.8.0</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.http-client</groupId>
                <artifactId>google-http-client-gson</artifactId>
            </exclusion>

            <exclusion>
                <groupId>com.google.api-client</groupId>
                <artifactId>google-api-client</artifactId>
            </exclusion>

            <exclusion>
                <groupId>com.google.api-client</groupId>
                <artifactId>google-api-client-gson</artifactId>
            </exclusion>


            <exclusion>
                <groupId>com.google.http-client</groupId>
                <artifactId>google-http-client</artifactId>
            </exclusion>

            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>

            <exclusion>
                <groupId>io.netty</groupId>
                <artifactId>netty-codec-http</artifactId>
            </exclusion>


            <exclusion>
                <groupId>io.netty</groupId>
                <artifactId>netty-handler</artifactId>
            </exclusion>


            <exclusion>
                <groupId>io.netty</groupId>
                <artifactId>netty-transport</artifactId>
            </exclusion>

            <exclusion>
                <groupId>com.google.cloud</groupId>
                <artifactId>google-cloud-storage</artifactId>
            </exclusion>

            <!-- <exclusion> -->
            <!-- <groupId>io.grpc</groupId> -->
            <!-- <artifactId>grpc-core</artifactId> -->
            <!-- </exclusion> -->

        </exclusions>

    </dependency>


    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.2</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.12</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
            </exclusion>
        </exclusions>

    </dependency>

    <dependency>
        <groupId>com.google.cloud.sql</groupId>
        <artifactId>mysql-socket-factory-connector-j-8</artifactId>
        <version>1.0.11</version>
    </dependency>

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-storage</artifactId>
        <version>1.77.0</version>
    </dependency>


    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-bigquery</artifactId>
        <version>0.34.0-beta</version>
        <!-- <exclusions> -->
        <!-- <exclusion> -->
        <!-- <groupId>com.google.api</groupId> -->
        <!-- <artifactId>gax</artifactId> -->
        <!-- </exclusion> -->
        <!-- </exclusions> -->


    </dependency>

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-logging</artifactId>
        <version>1.16.0</version>

        <exclusions>

            <exclusion>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-core</artifactId>
            </exclusion>
        </exclusions>

    </dependency>


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-nop</artifactId>
        <version>1.7.25</version>
    </dependency>


    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
    </dependency>


    <dependency>
        <groupId>org.owasp.encoder</groupId>
        <artifactId>encoder</artifactId>
        <version>1.2.2</version>
    </dependency>

    <dependency>
        <groupId>org.twitter4j</groupId>
        <artifactId>twitter4j-core</artifactId>
        <version>4.0.6</version>
    </dependency>

    <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>3.3</version>
    </dependency>

    <dependency>
        <groupId>org.mindrot</groupId>
        <artifactId>jbcrypt</artifactId>
        <version>0.4</version>
    </dependency>

    <dependency>
        <groupId>com.sendgrid</groupId>
        <artifactId>sendgrid-java</artifactId>
        <version>4.1.0</version>
    </dependency>

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-datastore</artifactId>
        <version>1.34.0</version>
        <exclusions>

            <exclusion>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-core</artifactId>
            </exclusion>
        </exclusions>

    </dependency>

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-sns</artifactId>
        <version>1.11.235</version>
    </dependency>

    <dependency>
        <groupId>com.stripe</groupId>
        <artifactId>stripe-java</artifactId>
        <version>7.24.0</version>
    </dependency>


    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-kms</artifactId>
        <version>1.0.0</version>
        <exclusions>

            <exclusion>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-core</artifactId>
            </exclusion>
        </exclusions>

    </dependency>

    <dependency>
        <groupId>com.segment.analytics.java</groupId>
        <artifactId>analytics</artifactId>
        <version>2.1.1</version>
    </dependency>

    <dependency>
        <groupId>com.google.api</groupId>
        <artifactId>gax-grpc</artifactId>
        <version>1.42.0</version>
    </dependency>

    <dependency>
        <groupId>net.imagej</groupId>
        <artifactId>ij</artifactId>
        <version>1.52p</version>
    </dependency>

    <dependency>
        <groupId>com.twilio.sdk</groupId>
        <artifactId>twilio</artifactId>
        <version>7.42.0</version>
    </dependency>

请问有人可以帮我吗?鉴于该项目已在 App 引擎中成功构建和部署

【问题讨论】:

    标签: google-app-engine openapi google-cloud-endpoints-v2


    【解决方案1】:

    您收到的错误消息通常意味着您缺少依赖项、配置错误或其版本已过期 [1]。在您的情况下,您的 pom.xml 文件中缺少“endpoints-framework-maven-plugin”。添加插件如下[2]。

     <plugin>
       <groupId>com.google.cloud.tools</groupId>
       <artifactId>endpoints-framework-maven-plugin</artifactId>
       <version>1.0.2</version>
       <configuration>
         <!-- plugin configuration -->
         <hostname>${endpoints.project.id}.appspot.com</hostname>
       </configuration>
     </plugin>
    

    [1]https://github.com/GoogleCloudPlatform/getting-started-java/issues/325#issuecomment-554639034 [2]https://cloud.google.com/endpoints/docs/frameworks/java/maven-endpoints-frameworks-plugin

    【讨论】:

    • 是的,这个插件已经添加了,很抱歉错过了在问题中添加它
    • 请使用您的 pom.xml 文件中的所有依赖项和插件更新您的问题,以便我们进一步调查该问题。
    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 2019-09-01
    • 1970-01-01
    • 2014-07-27
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多