添加要依赖的jar包
点击+之后会有如下选项
Library Files会显示当前sbt依赖的所有jar包,但是build artifacts之后在out目录下生成的jar包在反编译后是这样的:
Extracted Directory是直接去本地库中引jar包,注意每次build artifacts时记得删除之前out目录下生成的jar,防止没有正确的生成新的jar,build artifacts之后在out目录下生成的jar包在反编译后是这样的:
总结
发现这个问题的原因是因为运行spark程序的时候,用同样的工具打包(idea sbt),我引用mongo-java-driver包的时候,虽然在artifacts中加了依赖,但是提交spark程序的时候依然需要 –jar参数指明才能找到,而我的同事却不需要,后来经过对比发现是我们添加依赖的方式不同,idea默认就是以Extracted Directory导入的,因为集群上有些包存在,我做过删除操作,后来又自己添加了一些依赖(Library Files),然后运行程序的时候就出现了问题。
Library Files不会将多个jar包打在一起
Extracted Directory会将多个jar包打成一个jar包,相当于fat-jar,就像maven的assembly插件打包一样
如何用idea打jar包
IDEA与SBT打包差异
最新推荐文章于 2025-10-16 19:55:52 发布
本文探讨了在使用IDEA结合SBT进行Spark程序打包时遇到的问题,具体比较了LibraryFiles与ExtractedDirectory两种方式的区别及影响。

10万+

被折叠的 条评论
为什么被折叠?



