首页 > 解决方案 > java.lang.SecurityException AWSCredentialsProvider 签名者信息不匹配

问题描述

我正在使用 2 个亚马逊提供的库:redshift-jdbc42-1.2.27.1051aws-java-sdk-core-1.11.600. AWSCredentialsProvider两个库都在 package 下定义了一个类com.amazonaws.auth。当我尝试使用我的应用程序时,我得到了这个异常:

Caused by: java.lang.SecurityException: class "com.amazonaws.auth.AWSCredentialsProvider"'s signer information does not match signer information of other classes in the same package

我不知道如何解决这个问题。任何帮助,将不胜感激!

标签: javaaws-sdk

解决方案


我在 Amazon 的 Redshift JDBC 驱动程序文档中发现,他们说:

如果您使用 Amazon Redshift JDBC 驱动程序进行数据库身份验证,则您的 Java 类路径中必须有 AWS SDK for Java 1.11.118 或更高版本。如果您没有安装适用于 Java 的 AWS 开发工具包,您可以使用包含 AWS 开发工具包的驱动程序。

问题是由于现在我拥有两个库都提供的 AWS 开发工具包组件这一事实。现在,我不需要与驱动程序一起打包的 AWS 开发工具包,因为我可以从 AWS S3 开发工具包中使用它。事实上,亚马逊鼓励开发人员使用 Redshift JDBC 驱动程序,而无需预先打包 SDK:

重要的

我们强烈建议 尽可能使用不包含 AWS 开发工具包的 Amazon Redshift JDBC 驱动程序。

如果您遇到此问题并从 Maven 下载依赖项,您可以在此处找到非 aws-sdk 驱动程序:https ://mvnrepository.com/artifact/com.amazon.redshift/redshift-jdbc42-no-awssdk


推荐阅读