【发布时间】:2020-07-28 16:32:27
【问题描述】:
在我的小 Scala 项目中添加了两个依赖项后,我最近遇到了一些问题。我无法再运行我的项目。 Error: Could not find or load main class a.b.c.DataExtractor。我已经花了一整天的时间寻找类似的问题,因为同样的错误出现在其他平台上的很多帖子中。
我的胖罐是用 sbt 程序集创建的。
Seq(
"org.apache.httpcomponents" % "httpclient" % "4.5.12",
"org.apache.httpcomponents" % "httpmime" % "4.5.12",
"org.apache.olingo" % "olingo-odata2-api" % "2.0.11",
"org.apache.olingo" % "olingo-odata2-core" % "2.0.11",
"com.azure" % "azure-security-keyvault-secrets" % "4.1.0",
"com.azure" % "azure-identity" % "1.0.5",
"org.slf4j" % "slf4j-api" % "1.7.30"
)
一旦我添加了 com.azure 依赖项,它们就会附带更多的依赖项,我无法再启动我的项目。
在我的 target/scala-2.11 文件夹中,我有两个需要的 jar:
- data-extractor-assembly-0.1.0-SNAPSHOT.jar
- scala-library-2.11.12.jar
为了启动应用程序,我运行以下命令
java -cp data-extractor-assembly-0.1.0-SNAPSHOT.jar:scala-library-2.11.12.jar -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog -Dorg.apache.commons.logging.simplelog.showdatetime=true -Dorg.apache.commons.logging.simplelog.log.org.apache.http=DEBUG -verbose a.b.c.DataExtractor
我的猜测是它与程序集的构建有关。我检查了生成的工件,MANIFEST.MF 文件按预期显示Main-Class: a.b.c.DataExtractor,但仍有一些问题。我就是不知道问题的根源是什么。
那么,Scala 2.11.12、sbt 1.2.8 和 Java 1.8.0_162,如果相关的话
任何信息或提示将不胜感激。谢谢。
【问题讨论】:
-
主类是否也在 JAR 中?也许冲突解决使您最终得到了一个以不同名称具有 main 的库版本?
-
@MateuszKubuszok 不,主要课程是我自己的。它在生成的胖罐中具有正确的名称,包含包和所有内容。我什至反编译它并将其与“简单的 fat-jar”进行比较,后者不依赖于 Azure 项目。同样的事情,同样的代码,同样的 MANIFEST.MF 文件。看不出问题的原因
-
另一个想到的是加载过程中的错误。试着让你的主类基本上是空的,这样就不需要从类加载器加载其他东西了。检查是否仍然出现错误。
-
@MateuszKubuszok 感谢您迄今为止的建议以及您对此问题的兴趣。经过一番努力,我确实设法解决了它。请查看我发布的答案以了解更多信息
标签: java scala azure dependencies sbt