天天看点

记一次解决maven引入jar包冲突全过程;TinkConfig注册失败

关于google的tink解密用的protobufjar包冲突;

某次部署启动项目后发现解密方法失败,查阅日志,TinkConfig注册失败,追溯debug至jar包内部,tinconfig的注册方法处,

记一次解决maven引入jar包冲突全过程;TinkConfig注册失败

报错:

记一次解决maven引入jar包冲突全过程;TinkConfig注册失败

发现报错信息是V3版本的protobuf包中的类未加载,查看解密用的utils包A中是否成功引入com.google.protobuf的V3版本jar包,

记一次解决maven引入jar包冲突全过程;TinkConfig注册失败

如上图,utils包A下的tink中未成功引入protobuf包,判断是jar包冲突,看是否是其他的jar包也引入了其他版本的protobuf包,于是,在IDEA的命令行执行命令,mvn dependency:tree ,看是否有jar包冲突,果然,发现解密用的utils包之外的其他包有引入2.4.1版本的protobuf包,追溯其父类,发现pom中导入的atla*-client包引入了 com.aliyun.odps中的odps-mapred-bridge:jar,该jar中引入com.google.protobuf:protobuf-java:jar:2.4.1:compile,导致utils包中未成功引入V3版本的protobug包,jar包冲突处如下图:

记一次解决maven引入jar包冲突全过程;TinkConfig注册失败

问题解决:

在alta*-client.jar所在的pom文件中引入该jar包处排掉com.aliyun.odps:odps-mapred-bridge:jar

记一次解决maven引入jar包冲突全过程;TinkConfig注册失败

再次执行mvn dependency:tree,发现utils包A中此时已然有了3.6.0版本的protobuf包:

记一次解决maven引入jar包冲突全过程;TinkConfig注册失败

再次启动项目执行,问题解决!

过程中使用mvn dependency:tree方法很方便的可以看到jar包援引关系,精确找到jar包冲突

继续阅读