我有一个从模板创建的项目。当我这么做的时候 sbt run
我用main选择一个类并运行它。但是当我通过考试的时候 sbt "runMain com.mitzit.WordCount"
它失败了。如何通过main传递要从命令行运行的类?我不想编辑build.sbt
复制步骤
获取项目:
sbt new tillrohrmann/flink-project.g8 \
--name=sbt-flink-template \
--organization=com.mitzit \
--version=0.1 \
--flink_version=1.7.0 \
--scala=2.12.11
这很管用
跑 sbt run
```
Multiple main classes detected, select one to run:
[1] com.mitzit.Job
[2] com.mitzit.SocketTextStreamWordCount
[3] com.mitzit.WordCount
Enter number: 3`[success] Total time: 395 s, completed Apr 22, 2020 4:24:22 PM` 这失败了 `sbt "runMain com.mitzit.WordCount"`
[error] Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/typeinfo/TypeInformation
[error] at com.mitzit.WordCount.main(WordCount.scala)
如何运行特定的main而不必每次都选择它?
1条答案
按热度按时间pgky5nke1#
问题是在根项目中,flink库的一部分被分类为
provided
为了解决这个问题,这个模板项目tillrohrmann/flink-project.g8
正在提供公用事业子项目mainRunner
只需编辑依赖项配置,删除provided
分类器,允许从intellij(或您要求的sbt)运行它你可以直接跑