java.lang.SecurityException AWSCredentialsProvider签名者信息不匹配

2022-03-24 00:00:00 aws-sdk java

我使用的是Amazon提供的两个库:redshift-jdbc42-1.2.27.1051aws-java-sdk-core-1.11.600。这两个库都在包com.amazonaws.auth下定义了一个类AWSCredentialsProvider。当我尝试使用我的应用程序时,出现以下异常:

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

我不确定如何解决此问题。如有任何帮助,我们将不胜感激!


解决方案

我发现在亚马逊的红移JDBC驱动文档中,他们说:

如果您使用Amazon RedShift JDBC数据库驱动程序 身份验证,您必须在中安装AWS SDK for Java 1.11.118或更高版本 您的Java类路径。如果您没有安装AWS SDK for Java, 您可以使用包含AWS SDK的驱动程序。

问题是因为我现在拥有两个库都提供的AWS SDK组件。现在,我不需要将AWS SDK与驱动程序打包在一起,因为我可以从AWS S3 SDK中使用它。事实上,Amazon鼓励开发人员在没有预打包SDK的情况下使用RedShift JDBC驱动程序:

重要信息

我们强烈建议您使用Amazon RedShift JDBC驱动程序 如果可能,不包括AWS SDK。

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

相关文章