首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >appengineDeploy之后适用于com.google.api.Service.hasQuota的NoSuchMethodError

appengineDeploy之后适用于com.google.api.Service.hasQuota的NoSuchMethodError
EN

Stack Overflow用户
提问于 2021-03-23 15:28:06
回答 2查看 75关注 0票数 0

部署我的Google Endpoints API后,即使我只访问服务器url /或/_ah/warmup,也会收到下面的错误

代码语言:javascript
运行
复制
Uncaught exception from servlet
java.lang.NoSuchMethodError: com.google.api.Service.hasQuota()Z
    at com.google.api.control.model.MethodRegistry.extractQuota(MethodRegistry.java:290)
    at com.google.api.control.model.MethodRegistry.<init>(MethodRegistry.java:72)
    at com.google.api.control.ConfigFilter.init(ConfigFilter.java:89)

疯狂的是,这种情况时断时续地发生。有时部署会正常工作,但大多数情况下会失败。

这在3月1日之前一直运行得很好,所以我也回滚了gcloud组件的版本,但仍然得到相同的错误。

如果appengine和终结点库,已尝试升级到最新版本,但仍收到以下错误。

编辑-1

这是供参考的build.gradle

代码语言:javascript
运行
复制
buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        // App Engine Gradle plugin
        classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.4.1'

        // Endpoints Frameworks Gradle plugin
        classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:2.1.0'
    }
}

// Dev
def projectIdValue = 'dev-sample-api'

repositories {
    mavenCentral()
    jcenter()
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.appengine'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

sourceSets {
    main {
        java {
            srcDirs 'src/main/java'
        }
    }
}

dependencies {
    // App Engine API
    implementation group: 'com.google.appengine', name: 'appengine-api-1.0-sdk', version: '1.9.86'

    // Endpoints Frameworks v2.0
    implementation ('com.google.endpoints:endpoints-framework:2.2.2') {
        exclude group: 'org.slf4j', module: 'slf4j-nop'
    }
    implementation group: 'com.google.endpoints', name: 'endpoints-management-control-appengine', version: '1.0.14'
    implementation group: 'com.google.endpoints', name: 'endpoints-framework-auth', version: '1.0.14'
    implementation group: 'com.google.protobuf', name: 'protobuf-java-util', version: '3.15.6'
    implementation group: 'io.grpc', name: 'grpc-stub', version: '1.36.0'
    implementation group: 'io.grpc', name: 'grpc-protobuf', version: '1.36.0'


    // App Engine and Endpoint dependencies
    compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
    implementation 'jstl:jstl:1.2'
    implementation group: 'javax.inject', name: 'javax.inject', version: '1'

    // Logging
    implementation 'org.slf4j:slf4j-api:1.7.30'
    implementation 'org.slf4j:slf4j-jdk14:1.7.30'

    // Objectify for data storage and access
    implementation 'com.googlecode.objectify:objectify:5.1.9'

    // Common Utils and Libraries
    implementation 'com.google.guava:guava:20.0'
    implementation 'commons-validator:commons-validator:1.6'
    implementation 'joda-time:joda-time:2.10.8'
    implementation group: 'com.darwinsys', name: 'hirondelle-date4j', version: '1.5.1'
}

endpointsServer {
    // Endpoints Framework Plugin server-side configuration
    hostname = "${projectIdValue}.appspot.com"
}


// this replaces the ${endpoints.project.id} in appengine-web.xml and web.xml
task replaceProjectId(type: Copy) {
    from 'src/main/webapp/WEB-INF/'
    include '*.xml'
    into "build/exploded-${archivesBaseName}/WEB-INF"
    expand(endpoints:[project:[id:projectIdValue]])
    filteringCharset = 'UTF-8'
}
assemble.dependsOn replaceProjectId

appengine {
    deploy {   // deploy configuration
        version = "GCLOUD_CONFIG"
        projectId = "GCLOUD_CONFIG"

        def promoteProp = findProperty("appengine.deploy.promote")
        if (promoteProp != null) {
            promote = new Boolean(promoteProp)
        }
    }
    run {
        host = "0.0.0.0"
        port = 8080
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-27 01:02:27

根据@RafaelLemos的建议关闭这篇文章。

“可能是某个组件的旧版本出现了问题”

不可复制的。可能的修复

代码语言:javascript
运行
复制
gcloud components update
票数 1
EN

Stack Overflow用户

发布于 2021-11-18 10:32:22

仅供记录-正确的命令行将是:

代码语言:javascript
运行
复制
gcloud components update
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66758882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档