相关疑难解决方法(0)

从sbt程序集运行超级jar会导致错误:无法找到或加载主类

我使用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核心类,但我没有看到我的任何打包类被加载.

这可能有什么问题?

java jar classloader sbt-assembly

11
推荐指数
1
解决办法
1501
查看次数

标签 统计

classloader ×1

jar ×1

java ×1

sbt-assembly ×1