我使用sbt程序集插件将一个spark工作打包为uber-jar.该build.sbt指定可运行的主要得到的尤伯杯罐的目标
mainClass in assembly := Some("com.foo.Bar")
Run Code Online (Sandbox Code Playgroud)
正确创建程序集后,运行预期的命令:
java -jar assembly.jar
Run Code Online (Sandbox Code Playgroud)
结果是
错误:无法找到或加载主类com.foo.Bar
使用替代方法,就像java -cp assembly.jar com.foo.Bar给出相同的错误消息.
然后,我在新目录中提取了超级jar的内容.我可以看到我的com/foo/目录和Bar.class文件.从我提取的目录的根目录我尝试:
java -cp . com.foo.Bar
Run Code Online (Sandbox Code Playgroud)
我得到了正确的结果.
进一步试图找出错误的原因,我试过:
java -verbose -jar assembly.jar
Run Code Online (Sandbox Code Playgroud)
我可以看到正在加载java核心类,但我没有看到我的任何打包类被加载.
这可能有什么问题?