当前位置: 首页 > 知识库问答 >
问题:

尝试使用java将文件上载到Amazon S3时,jackson出现了NoSuchMethodError。

孔彭祖
2023-03-14

我的项目正在尝试使用aws-java-sdk-1.11.15将文件上传到Amazon S3。我正在使用ant在CLI上构建我的项目。我使用的杰克逊版本是2.8.0。我正在将我的lib文件夹添加到我的类路径中。我所有的jar文件都在我的lib文件夹中。我在运行我的代码时得到以下信息-

Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.enable([Lcom/fasterx
ml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/databind/ObjectMapper;
at com.amazonaws.partitions.PartitionsLoader.(PartitionsLoader.java:54)
at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:66)
at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:54)
at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:107)
at com.amazonaws.services.s3.AmazonS3Client.createSigner(AmazonS3Client.java:3256)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3952)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1538)
at code4goal.antony.resumeparser.ResumeParserProgram.main(ResumeParserProgram.java:613)

对于这段代码-

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
try
{
    File file = new File(uploadFileName);
    s3client.putObject(new PutObjectRequest(bucketName, keyName, file));
}

错误在s3client中。putObject(新PutObjectRequest(bucketName、keyName、file));

共有3个答案

吕皓
2023-03-14

如果您同时使用Dagger(匕首)或Butterknife(巴特刀),则可能会导致使用外部库,您应该将番石榴作为依赖项添加到构建中。gradle类主文件路径:

com.google.guava:番石榴:20.0

另一方面,如果您在Gradle守护进程的较大堆方面遇到问题,您可以增加对radle文件的添加:

 dexOptions {
        javaMaxHeapSize "4g"
    } 

还要记住使用annotationProczer来编译具有此类问题的库以解决问题。

徐柏
2023-03-14

似乎是库版本冲突。AWS Java SDK 1.11.15取决于Jackson版本2.6.6(请参阅http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-core/1.11.15). Jackson在2.8.0中可能有一些突破性的变化,所以你可能想尝试将其降级到2.6.6,然后再试一次。

奚晟
2023-03-14

正如Christophe L提到的,那就是Jackson库版本冲突。

这里有一个方法如何容易

如果您使用的其他库与Amazon SDK使用的版本冲突,请考虑使用aws java SDK捆绑包,该捆绑包通过重命名的包名与所有必需的库一起分发。这使您可以安全地一起使用亚马逊图书馆的v1.11.15和最新的Jackson<更多信息:https://aws.amazon.com/blogs/developer/java-sdk-bundle/

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bundle</artifactId>
        <version>1.11.15</version>
        <!-- <version>1.11.172</version> -->
    </dependency>

P、 亚马逊SDK 1.11.172的美国实际版本

 类似资料:
  • 我试图使用以下命令将第三方jar部署到sonatype nexus存储库: 我得到以下错误: [error]在当前项目和插件组[org.apache.maven.plugins,org.codehaus.mojo]中找不到前缀“–Durl=http”的插件,这些插件组可从中央存储库[local(/Users/ssurendran/.m2/repository)获得(https://repo.mav

  • 问题内容: 我正在尝试使用Jackson将一些JSON数据转换为Java对象(精确地说是对象列表),但出现此错误: org.codehaus.jackson.map.JsonMappingException:无法反序列化objectlayerlayer的实例。START_ARRAY令牌之外的详细信息 这是代码: ld 是Json格式的列表,这是让我在jackson教程中感到困惑的部分。这是什么 新

  • 我正在尝试上载一个csv文件到服务器。下面是我的HTML代码: 还有我的JS:- 我面临以下错误:- 加载资源失败:服务器响应的状态为500(HTTP/1.1 500) 可能未经处理的拒绝:{“data”:{“timestamp”:1510643953084,“status”:500,“error”:“内部服务器错误”,“exception”:“java.lang.NullPointerExcep

  • 我正在尝试使用Apache Camel将csv文件从本地目录上载到AWS S3。 参考这里找到的留档(https://camel.apache.org/staging/components/latest/aws-s3-component.html),我试图创建一个简单的路线,就像这样(我当然删除了密钥和其他识别信息,并将其替换为[FAKE_INFO]): 这会导致以下错误: 错误:java。lan

  • 根据SkyDrive api(http://msdn.microsoft.com/en-us/library/live/hh826531.aspx#uploading_files),我在帖子请求的正文中以字节[]传递图像的内容。文件创建发生在skyDrive服务器上,但当我在skyDrive中打开它时,它说“文件应用程序被损坏或损坏”。 请求的正文 --A300x内容处理:表单数据;name=“f

  • 我正在尝试将文件上传到 Azure Blob 存储,但在将文件推送到存储中时收到错误。 我使用java 11和Quarkus进行开发。在POM上,我添加了工件azure-storage-blob和azure-sdk-bom 法典: 恢复错误 io.net.cha.DefaultChannelPipeline] (vert.x-eventloop-thread-2) 一个 exceptionCaug