NoSuchMethodError:com.amazonaws.services.s3.model.S3ObjectInputStream.readAllBytes()

时间:2019-01-07 17:36:10

标签: java amazon-web-services spring-boot amazon-s3 noclassdeffounderror

我正在开发一个Spring Boot应用程序,该应用程序使用spring aws集成定期轮询S3存储桶并处理来自S3的被轮询对象。尝试从另一个S3存储桶读取已处理的对象时,出现异常

java.lang.NoSuchMethodError: com.amazonaws.services.s3.model.S3ObjectInputStream.readAllBytes()[B
    at com.app.controller.AppController.viewImage(AppController.java:79) ~[classes!/:0.0.1-SNAPSHOT]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]

当我部署为Java应用程序时,它仅在ec2实例中发生,而在本地不发生。认为这可能是由于类加载与Amazon-linux ami中的jar冲突导致的,我尝试在ubuntu实例中进行部署,但该错误反复出现。

只是我的pom.xml的一小段

<dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk -1</artifactId>
        <version>1.11.133</version>
    </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-aws -->
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-aws</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>

有人可以帮助我解决此问题吗?另外,请让我知道是否需要除上述细节之外的其他细节

1 个答案:

答案 0 :(得分:2)

realAllBytes是父类InputStream的方法。自Java 9以来,此方法已添加到InputStream中。您可能在运行时使用了较低的jdk版本