将风暴拓扑转换为 flink - "no entry class specified"?

converting storm topology to flink - "no entry class specified"?

我正在按照 these 的指示将现有的风暴拓扑转换为 flink 作业。我通过 git 安装了 flink 1.0 (SNAPSHOT),并在本地安装了网络服务器和流媒体服务器 运行。

我通过 gradle 将拓扑构建到一个 .jar 文件中,并通过 flink web 界面提交并收到此消息:"no entry class specified".

所以 - 缺少入口点? .jar 需要什么特别的东西吗?清单?

这个 .jar 在提交到风暴集群时可以正常工作。我添加了(看起来像)相关的 flink .jar 文件。


编辑:

通过 cmd 行提交作业显示了这条消息:

org.apache.flink.client.program.ProgramInvocationException: Neither a 'Main-Class', nor a 'program-class' entry was found in the jar file. at org.apache.flink.client.program.PackagedProgram.getEntryPointClassNameFromJar(PackagedProgram.java:563) at org.apache.flink.client.program.PackagedProgram.(PackagedProgram.java:186) at org.apache.flink.client.program.PackagedProgram.(PackagedProgram.java:124) at org.apache.flink.client.CliFrontend.buildProgram(CliFrontend.java:725) at org.apache.flink.client.CliFrontend.run(CliFrontend.java:287) at org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:971) at org.apache.flink.client.CliFrontend.main(CliFrontend.java:1021)

正在阅读 this JIRA 建议的一些答案:

  1. 添加清单
  2. 在 cmd 行上添加入口点(使用“-c ”选项)

在Flink中,有两种方法可以指定包含

的入口点class
public static void main(String[] args)

方法。这也适用于在 Flink 中执行的 Storm 拓扑。

  1. 在您的 jar 中包含清单文件(对应的条目必须是 Main-Classprogram-class,即“program-class: package.and.EntryClass”)
  2. 您可以指定 -c 标志(即 bin/flink run -c package.and.EntryClass <jarFile.jar>(参见 https://ci.apache.org/projects/flink/flink-docs-master/apis/cli.html

如果你使用的是 Flink 的 WebClient,你可以在输入字段中指定 -c 标志 Flink Options(参见此处:https://ci.apache.org/projects/flink/flink-docs-master/apis/web_client.html