首页 > 解决方案 > Athena JDBC 驱动程序版本 2.0.15 与核心 AWS SDK 不兼容?

问题描述

我们将标准 Java AWS 开发工具包用于其他 AWS 服务,BasicAWSCredentials用于身份验证。对于 Athena 集成,我们使用标准AWS Athena JDBC 驱动程序。这一直工作正常,但是当升级到最新的 Athena JDBC 驱动程序版本(2.0.15)时,应用程序中BasicAWSCredentials其他地方的使用停止工作

我们得到的错误信息是:

class "com.amazonaws.auth.BasicAWSCredentials"'s signer information does not match signer information of other classes in the same package

据我所知,此错误消息是由同一包中的不同类从未以相同方式签名的不同 jar 加载的。确实:来自 maven 的核心 SDK jar 没有签名,但 2.0.15 Athena JDBC 驱动程序 jar(由于某些模糊的原因 - 包括例如com.amazonaws.auth.AWSCredentialscom.amazonaws.auth.AWSCredentialsProvider“Amazon.com Services LLC”签名。

这意味着 JVM 可能(可能取决于类路径排序)尝试com.amazonaws.auth.AWSCredentials从 JDBC 驱动程序 jar 加载,但com.amazonaws.auth.BasicAWSCredentials该类是在 aws-java-sdk-core jar 中定义的,即 JVM告知在来自不同签名的 jar 的相同包。

底线:在 JDBC 驱动程序 jar 中包含类似乎是一个坏主意com.amazonaws.auth,特别是因为这个 jar 是在最新版本中签名的。JVM(JDK 11)将不接受从此包加载不同的类,除非所有 jar 都以相同的方式签名。

想法/解决方法?我宁愿不篡改任何外部罐子。

标签: javajdbcaws-sdkamazon-athena

解决方案


推荐阅读