java.lang.SecurityException AWSCredentialsProvider签名者信息不匹配
我使用的是Amazon提供的两个库:redshift-jdbc42-1.2.27.1051
和aws-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
相关文章