我们将标准的javaawsdk用于其他aws服务,使用 BasicAWSCredentials
用于身份验证。对于athena集成,我们使用标准的aws athena jdbc驱动程序。这一直运行良好,但当升级到最新的雅典娜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加载引起的,这些jar的签名方式不同。事实上:maven的核心sdk jar没有签名,而是2.0.15 athena jdbc驱动程序jar(由于一些模糊的原因,它包括。 com.amazonaws.auth.AWSCredentials
以及 com.amazonaws.auth.AWSCredentialsProvider
)由“amazon.com服务有限责任公司”签署。
这意味着jvm可能(可能取决于类路径顺序)尝试加载 com.amazonaws.auth.AWSCredentials
来自jdbc驱动程序jar,但是 com.amazonaws.auth.BasicAWSCredentials
类是在aws java sdk核心jar中定义的,即jvm被告知从不同签名的jar加载同一个包中的不同类。
一句话:把 com.amazonaws.auth
类,特别是因为这个jar是在最新版本中签名的。jvm(jdk 11)将不接受从这个包加载不同的类,除非所有jar都以相同的方式签名。
想法/解决方法?我不想篡改任何外部jar。
暂无答案!
目前还没有任何答案,快来回答吧!