Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
亚马逊S3“;NoSuchFieldError:需要“U长度”;对于Java中的putObject?_Java_Eclipse_Amazon Web Services_Amazon S3 - Fatal编程技术网

亚马逊S3“;NoSuchFieldError:需要“U长度”;对于Java中的putObject?

亚马逊S3“;NoSuchFieldError:需要“U长度”;对于Java中的putObject?,java,eclipse,amazon-web-services,amazon-s3,Java,Eclipse,Amazon Web Services,Amazon S3,我正在尝试将JSON对象写入S3。我在EclipseIDE上设置了AWS凭据,它们可以与我与DynamoDB交互的代码正常工作-这些凭据可以完全访问AWS 我在这里使用AWS提供的示例代码: 但由于某些原因,我一直得到以下错误: java.lang.NoSuchFieldError: REQUIRES_LENGTH at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1708) at com.amaz

我正在尝试将JSON对象写入S3。我在EclipseIDE上设置了AWS凭据,它们可以与我与DynamoDB交互的代码正常工作-这些凭据可以完全访问AWS

我在这里使用AWS提供的示例代码:

但由于某些原因,我一直得到以下错误:

java.lang.NoSuchFieldError: REQUIRES_LENGTH
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1708)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1680)
at com.javapapers.webservices.rest.jersey.metrics.DailyMetricsReportWriter.writeReportToS3(DailyMetricsReportWriter.java:42)
at com.javapapers.webservices.rest.jersey.metrics.MetricsServiceTest.shoutsAndSessionsForWriter(MetricsServiceTest.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:39)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:79)
at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:70)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at     org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
有什么想法吗

我在这里的其他地方读到需要ApacheHTTPCore库,所以我添加了它,但它仍然不起作用

我还尝试在方法中创建一个文件并将其传入,但这不起作用

我使用了一个例子,将对象元数据设置为包含长度,但这也不起作用

我没有主意了

public String writeReportToS3(DailyMetricsReport report) {
        String bucket_name = "existing_bucket";
        String file_path = "new_file_name";
        String key_name = Paths.get(file_path).getFileName().toString();

        System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name);
        final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();
        try {
            s3.putObject(bucket_name, key_name, new File(file_path));
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
            System.exit(1);
        }

    return "done!";
}
正确的解决方案: 要选择单个SDK模块,请使用AWS SDK for Java BOM for Maven,这将确保您指定的模块使用相同版本的SDK,并且它们彼此兼容

现在,您可以从应用程序中使用的SDK中选择各个模块。因为您已经在BOM表中声明了SDK版本,所以不需要为每个组件指定版本号

注意。检查Java版本2的AWS SDK:


不要在生产中这样做: 您也可以自己承担风险,强制自己依赖:

<project>
    <dependencies>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>1.11.615</version>
            <exclusions>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>aws-java-sdk-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>aws-java-sdk-kms</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>jmespath-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-dynamodb</artifactId>
            <version>1.11.615</version>
            <exclusions>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>aws-java-sdk-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>jmespath-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
            <version>1.11.615</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-kms</artifactId>
            <version>1.11.615</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>jmespath-java</artifactId>
            <version>1.11.615</version>
        </dependency>
    </dependencies>
</project>

…现在您应该运行一些严肃的测试:(

请提供您的AWS库依赖项和版本。@Compass AWS-java-sdk-core-1.11.477.jar、AWS-java-sdk-dynamodb-1.11.477.jar、AWS-java-sdk-s3-1.11.592.jar都是构建中的AWS库path@Compass我将我的aws java sdk核心也更新为1.11.592,但不幸的是,这并没有改变您可能需要执行依赖项的任何内容-对依赖项进行树分析,以查看是否正在为AWS拉入过时的jar
[INFO] +- com.amazonaws:aws-java-sdk-s3:jar:1.11.415:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-kms:jar:1.11.415:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-core:jar:1.11.415:compile
[INFO] |  \- com.amazonaws:jmespath-java:jar:1.11.415:compile
[INFO] \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.415:compile
<project>
    <dependencies>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>1.11.615</version>
            <exclusions>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>aws-java-sdk-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>aws-java-sdk-kms</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>jmespath-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-dynamodb</artifactId>
            <version>1.11.615</version>
            <exclusions>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>aws-java-sdk-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.amazonaws</groupId>
                    <artifactId>jmespath-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
            <version>1.11.615</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-kms</artifactId>
            <version>1.11.615</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>jmespath-java</artifactId>
            <version>1.11.615</version>
        </dependency>
    </dependencies>
</project>
[INFO] +- com.amazonaws:aws-java-sdk-s3:jar:1.11.615:compile
[INFO] +- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.615:compile
[INFO] +- com.amazonaws:aws-java-sdk-core:jar:1.11.615:compile
[INFO] +- com.amazonaws:aws-java-sdk-kms:jar:1.11.615:compile
[INFO] \- com.amazonaws:jmespath-java:jar:1.11.615:compile