java - java.lang.SecurityException AWSCredentialsProvider 签名者信息不匹配
问题描述
我正在使用 2 个亚马逊提供的库:redshift-jdbc42-1.2.27.1051
和aws-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
我不知道如何解决这个问题。任何帮助,将不胜感激!
解决方案
我在 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
推荐阅读
- c# - 如何从 .Net 标准 2.0 添加对 .Net Core 3.1 项目的引用?
- android - 变量“观察者”可能尚未初始化
- java - 用没有 HTML 的 Spas 替换某些字符串
- regex - 查询不会过滤由 | 分隔的两个值 在不包含字符串
- javascript - 在本机反应中找不到变量导航
- python - 为什么 Matplotlib.hist 采用不同的列表?
- flutter - 如何在覆盖全屏的背景图像上创建一列小部件?
- android - Recylerview 不显示获取的数据
- python - PyQt5 应用程序的重启/主题切换功能
- tfsbuild - Apple App Store 发布任务 1.183 出错。当前操作系统无法运行此任务