-
添加要依赖的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插件打包一样