SBT Shade插件无法解决Jar重复类问题求助
问题描述
使用SBT构建项目时遇到大量Deduplicate found... error错误,示例错误如下:
[error] Deduplicate found different file contents in the following: [error] Jar name = netty-all-4.1.68.Final.jar, jar org = io.netty, entry target = io/netty/handler/ssl/SslProvider.class [error] Jar name = netty-handler-4.1.50.Final.jar, jar org = io.netty, entry target = io/netty/handler/ssl/SslProvider.class ...
为解决该问题,我参考资料配置了sbt-assembly的Shade规则,对所有依赖库进行包重命名,但重新加载SBT后执行assembly命令仍出现相同的重复类错误。请问问题出在哪里?
后续解决过程
最终放弃包重命名方案,通过以下方式解决问题:
- 将Spark依赖标记为
provided,避免把Spark相关依赖打包进最终生成的Jar包 - 调整sbt-assembly的合并策略,处理
module-info.class的重复冲突问题 - 将Spark官方Jar包与项目生成的Jar包放在同一目录(例如
./app/),通过指定类路径运行项目:
java -cp "./app/*" main.Main
内容的提问来源于stack exchange,提问作者palandlom
相关产品推荐
相关产品推荐

