【发布时间】:2018-02-27 11:48:52
【问题描述】:
我有一个使用 sbt 程序集插件打包为 uber-jar 的 spark 作业。
build.sbt 指定一个可运行的 main 作为生成的 uber-jar 的目标
mainClass in assembly := Some("com.foo.Bar")
正确创建程序集后,运行预期的命令:
java -jar assembly.jar
结果
错误:无法找到或加载主类 com.foo.Bar
使用另一种方法,如java -cp assembly.jar com.foo.Bar 会给出相同的错误消息。
然后,我将 uber-jar 的内容提取到一个新目录中。我可以看到我的com/foo/ 目录和Bar.class 文件。
从我尝试的提取目录的根目录:
java -cp . com.foo.Bar
我得到了正确的结果。
进一步尝试查找错误原因,我尝试了:
java -verbose -jar assembly.jar
我可以看到正在加载的 java 核心类,但我没有看到任何正在加载的打包类。
这里可能有什么问题?
【问题讨论】:
标签: java jar classloader sbt-assembly