gpt4 book ai didi

java - Maven - 无法解决 google-vision beta 和 aws-sdk 子组件之间的依赖冲突

转载 作者:行者123 更新时间:2023-12-02 02:33:35 24 4
gpt4 key购买 nike

我正在尝试使用 google-vision 从图像(上传到 AWS S3)中获取文本并将其存储在 AWS Dynamo DB 中。我在 jackson-core 上遇到依赖项冲突,因为 google-api 和 aws-java-sdk 使用两个不同的版本。

<小时/>

依赖层次结构

google-api-client: 1.22.0 uses jackson-core: 2.1.3

google-cloud-vision: 0.22.0-beta uses jackson-core: 2.1.3

aws-java-sdk: 1.11.106 uses jackson-core: 2.6.6

我尝试了“排除”并在 pom.xml 中添加了显式依赖项以使用 jackson-core: 2.6.6。 Google-vision api 可以很好地适应这一变化。但是,AmazonDynamoDBClientBuilder 失败并出现以下错误:

<小时/>
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.amazonaws.AmazonWebServiceClient.<init>(Lcom/amazonaws/client/AwsSyncClientParams;)V from class com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder.build(AmazonDynamoDBClientBuilder.java:60)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder.build(AmazonDynamoDBClientBuilder.java:26)
at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
at com.oneglint.ImageProcessing.AddItem.main(AddItem.java:133)

版本冲突时显示以下错误

Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:537)
at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:448)
at com.amazonaws.partitions.PartitionsLoader.<clinit>(PartitionsLoader.java:51)
at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:64)
at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:52)
at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:105)
at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:239)
at com.oneglint.ImageProcessing.AddItem.main(AddItem.java:132)
<小时/>

我在这里缺少什么?感谢您的帮助..

顺便说一句,我正在使用 github 中的示例代码来实现此目的。以下是链接:

DynamoDB 示例:https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/java/example_code/dynamodb

Google Vision DetectText 示例:https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/vision/cloud-client/src/main/java/com/example/vision/Detect.java

<小时/>

其他详细信息

如果作为独立项目执行,这两个示例都可以正常工作。仅当 PutItem (AWS) 和 Detect (google-vision) 类合并在一个项目中并进行适当的代码更改时,才会出现此问题。

最佳答案

您的项目中只能有一个版本的 jackson-core。修复版本的最简单方法是使用 <dependencyManagement>设置版本。

您的主要问题是 jackson-core: 2.6.6 与 AmazonDynamoDBClientBuilder 不兼容。通常的策略是尝试从 2.1.3 到 2.6.6 的所有版本,直到其中一个版本有效。如果没有,您可以尝试查找需要相同 Jackson-core-version 的 amazon 和 google jar 版本。无论如何,这种愚蠢而无聊的尝试和错误。

如果您没有找到任何可行的解决方案,您可以尝试使用 maven-shade-plugin 来遮蔽类(我没有尝试过,可能很困难),或者您需要以两种依赖项都不存在的方式更改您的项目必需的。

关于java - Maven - 无法解决 google-vision beta 和 aws-sdk 子组件之间的依赖冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com