微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS SQS 发送消息 java.lang.NoSuchFieldError: CLIENT_ENDPOINT

如何解决AWS SQS 发送消息 java.lang.NoSuchFieldError: CLIENT_ENDPOINT

java.lang.NoSuchFieldError: CLIENT_ENDPOINT
    at com.amazonaws.services.sqs.AmazonSQSClient.executeSendMessage(AmazonSQSClient.java:1813)
    at com.amazonaws.services.sqs.AmazonSQSClient.sendMessage(AmazonSQSClient.java:1795)
    at com.tvg.atp.orch.utils.soapUtil.sendErrorString(SoapUtil.java:700)
    at com.tvg.atp.orch.handler.OrchFunction.apply(OrchFunction.java:73)
    at com.tvg.atp.orch.controller.OrchController.processEvent(OrchController.java:55)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190)
    at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1040)
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcmetricsFilter.doFilterInternal(WebMvcmetricsFilter.java:109)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
    at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:832)

我对 gradle 比较陌生。我正在向 AWS SQS 死信队列发送消息。我不断收到上述错误。同一个类首先尝试根据过滤器将消息传递到另一个队列,如果不成功,则将消息发送到 dlq。我已经测试了快乐路径并且它有效。生成错误字符串,但无法将消息发送到 dlq。我读过这通常是与 sdk 的冲突,但我无法解决它。这是我的 build.gradle 文件

buildscript {
    ext {
        SPRING_BOOT = '2.2.12.RELEASE'
        SPRING_CLOUD_AWS = '2.2.4.RELEASE'
        SPRING_CLOUD = 'Hoxton.SR8'
        AWS_SDK = "1.11.611"
        SPRING_BOOT_GRADLE_PLUGIN='2.4.0'
    }
    repositories {
        maven {
            url = uri('https://repo.maven.apache.org/maven2/')
        }
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${SPRING_BOOT}"
        classpath "gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:2.0.0"
        classpath "org.owasp:dependency-check-gradle:6.1.0"
        classpath 'com.github.ben-manes:gradle-versions-plugin:0.27.0'
    }
}

plugins {
    id 'net.ltgt.apt' version '0.21'
    id 'net.ltgt.apt-idea' version '0.21'
    id "com.gorylenko.gradle-git-properties" version "2.0.0"
}

configurations {
    antJUnit
}
dependencies {
    antJUnit 'org.apache.ant:ant-junit:1.10.8'
}


apply plugin: 'io.spring.dependency-management'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'groovy'

group = "com.group.${rootProject.name}"
archivesBaseName = "${rootProject.name}"

sourceCompatibility = 1.8
//mainClassName = 'com.group.notifications.handler.ScheduledEventHandlerImplementation'
dependencyManagement {
    dependencies {
        dependency "org.springframework.boot:spring-boot-starter:${SPRING_BOOT}"
        dependency "org.springframework.boot:spring-boot-starter-web:${SPRING_BOOT}"
        //dependency "org.springframework.boot:spring-boot-starter-activemq:${SPRING_BOOT}"
        
        dependency 'xalan:xalan:2.7.1'
        dependency 'commons-lang:commons-lang:2.3'
        dependency 'net.logstash.logback:logstash-logback-encoder:6.1'
        dependency 'org.apache.commons:commons-lang3:3.11'
        dependency 'javax.xml.bind:jaxb-api:2.3.1'
        dependency 'xerces:xercesImpl:2.8.1'
        dependency 'org.mvel:mvel2:2.4.11.Final'
    }
    imports {
        mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${SPRING_CLOUD}"
        mavenBom "org.springframework.cloud:spring-cloud-aws-dependencies:${SPRING_CLOUD_AWS}"
    }
    testCompile {
        dependencies {
            //dependency "org.spockframework:spock-core:1.3-groovy-2.5"
        }
    }
}


allprojects {
    apply plugin: 'java'
    apply plugin: 'jacoco'
    repositories {
        maven {
            url = uri('https://repo.maven.apache.org/maven2/')
        }
    }
}

//apply from: 'gradle/code-quality.gradle'
apply from: 'gradle/dependency-check.gradle'
//apply from: 'gradle/utils.gradle'
apply from: 'gradle/dependency-updates.gradle'

apply plugin: 'application'
apply plugin: 'org.springframework.boot'

dependencies {
    compile "org.springframework.boot:spring-boot-starter-actuator"
    compile "org.springframework.boot:spring-boot-starter-web"
    //compile 'org.springframework.boot:spring-boot-starter-activemq:2.4.1'
    compile 'org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config'
    compile "org.springframework.cloud:spring-cloud-function-adapter-aws"
    compile 'com.amazonaws:amazon-sqs-java-messaging-lib'//:1.0.4' Todo Commented out
    //compile group: 'com.amazonaws',name: 'aws-java-sdk-dynamodb',version: '1.11.792' Todo Commented out
    implementation group: 'com.amazonaws',name: 'aws-lambda-java-events',version: '3.6.0'//'2.2.2'
    //implementation 'com.amazonaws:aws-lambda-java-core:1.2.1' Todo Commented out
    //testImplementation 'junit:junit:4.13.1' Todo Commented out
    //implementation group: 'com.amazonaws',name: 'aws-java-sdk-sqs',version: '1.11.993' Todo Commented out

    //implementation 'org.slf4j:slf4j-api:1.7.30' Todo Commented out
    
    // https://mvnrepository.com/artifact/org.w3c/dom
    implementation group: 'org.w3c',name: 'dom',version: '2.3.0'//-jaxb-1.0.6
    
    // https://mvnrepository.com/artifact/org.json/json
    implementation group: 'org.json',name: 'json',version: '20090211'
    
    // https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-sqs
    //implementation group: 'com.amazonaws',version: '1.11.988'
    
    //implementation group: 'org.springframework.ws',name: 'spring-ws-core',version: '3.0.10.RELEASE' Todo Commented out
    
    // https://mvnrepository.com/artifact/com.sun.xml.messaging.saaj/saaj-impl
    implementation group: 'com.sun.xml.messaging.saaj',name: 'saaj-impl',version: '1.3'
    
    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test
    //testImplementation group: 'org.springframework.boot',name: 'spring-boot-starter-test' Todo Commented out
    
    runtimeOnly 'org.jlib:jlib-awslambda-logback:1.0.0'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'//Added to run tests in IDE

    compile "com.fasterxml.jackson.core:jackson-databind"
    compile 'xalan:xalan'
    compile 'commons-lang:commons-lang'
    compile 'net.logstash.logback:logstash-logback-encoder'
    compile group: 'org.slf4j',name: 'slf4j-api',version: '1.7.30'

    //compile 'org.apache.commons:commons-lang3:3.11' Todo Commented out
    compile 'javax.xml.bind:jaxb-api:2.3.1'
    compile 'xerces:xercesImpl:2.8.1'
    compile 'org.mvel:mvel2:2.4.11.Final'
    
    //compile 'javax.xml.bind:jaxb-api:2.3.0' Todo Commented out
    compile 'javax.activation:activation:1.1'
    //compile 'org.glassfish.jaxb:jaxb-runtime:2.3.0' Todo Commented out
    //compile "org.springframework.boot:spring-boot-starter-actuator" Todo Commented out
    //compile "org.springframework.boot:spring-boot-starter-web" Todo Commented out

     testImplementation(platform("org.junit:junit-bom:5.7.0"))
        testImplementation('org.junit.jupiter:junit-jupiter-api')
        testCompile('org.junit.jupiter:junit-jupiter-params')
        testRuntime('org.junit.jupiter:junit-jupiter-engine')
        testCompile group: 'org.mockito',name: 'mockito-inline',version: '3.2.0'
        test.useJUnitPlatform() // fix "test events not received" bug in IDEA
        testCompile 'com.willowtreeapps.assertk:assertk-jvm:0.23'
}

jar {
    manifest {
        attributes "Main-Class": "com.cam.cam.orch.handler.CamOrchFunction"
    }

    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
    from('src/main/resources') {
        include '*'
     }
}

task buildZip(type: Zip) {
    from compileJava
    from processResources
    into('lib') {
        from configurations.runtimeClasspath
    }
    doLast{
        filetree tree = filetree('build/distributions')
        tree.each {
            println it.name
        }
    }
}

test {

    useJUnitPlatform {
        includeEngines 'junit-jupiter','junit-vintage'
    }
    reports.html.enabled = false
    reports.junitXml.enabled = true
}


task testReport {
    ant.taskdef(name: 'junitreport',classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator',classpath: configurations.antJUnit.asPath)
    dependsOn subprojects*.test
    doFirst {
        mkdir "$buildDir/test-results"
        ant.junitreport(todir: "$buildDir/test-results") {
            subprojects.each {
                if (it.testResultsDir.exists()) {
                    fileset(dir: it.testResultsDir)
                }
            }
        }
    }
}

任何帮助都会很棒。

解决方法

我建议放弃旧的 V1 API,并将其替换为适用于 Java V2 的 AWS 开发工具包。亚马逊建议使用 v2:

适用于 Java 2.x 的 AWS 开发工具包是对 1.x 版代码库的主要重写。它构建在 Java 8+ 之上,并添加了几个经常请求的功能。其中包括对非阻塞 I/O 的支持以及在运行时插入不同 HTTP 实现的能力。

适用于 Java V2 的 AWS 开发工具包与 Spring 框架配合良好。有一个教程展示了 SQS 服务和 Spring 框架的使用。但是 - 它使用 POM 文件而不是 Gradle。但是,它可能对您有所帮助。

Creating an example messaging application using the AWS SDK for Java

V1 没有像这样的端到端教程。

,

对于任何有同样问题的人,我运行了 gradle 依赖项命令,发现 2 个 sdk 引用与其他引用不同。使它们都相同解决了问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?