首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Flink - org.apache.flink.client.program.ProgramInvocationException

Apache Flink - org.apache.flink.client.program.ProgramInvocationException
EN

Stack Overflow用户
提问于 2016-05-26 14:35:45
回答 3查看 8.3K关注 0票数 4

我已经使用Scala2.11.7创建了一个带有Apache 1.0.3的应用程序,我想在本地测试它(单个FLink )。因此,我按照网站上的说明执行了以下操作:

代码语言:javascript
复制
./bin/start-local.sh
tail log/flink-*-jobmanager-*.log

它启动得很好,我可以在localhost:8081上看到web界面。然后,我试图提交我的申请,但我得到了一个异常或奇怪的消息。例如,当我键入以下任一命令时:

代码语言:javascript
复制
./bin/flink run ./myApp.jar
./bin/flink run ./myApp.jar -c MyMain
./bin/flink run ./myApp.jar -c myMain.class
./bin/flink run ./myApp.jar -c myMain.scala
./bin/flink run ./myApp.jar -c my.package.myMain
./bin/flink run ./myApp.jar -c my.package.myMain.class
./bin/flink run ./myApp.jar -c my.package.myMain.scala

我得到了以下异常:

代码语言:javascript
复制
------------------------------------------------------------
 The program finished with the following exception:

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:571)
    at org.apache.flink.client.program.PackagedProgram.<init>(PackagedProgram.java:188)
    at org.apache.flink.client.program.PackagedProgram.<init>(PackagedProgram.java:126)
    at org.apache.flink.client.CliFrontend.buildProgram(CliFrontend.java:922)
    at org.apache.flink.client.CliFrontend.run(CliFrontend.java:301)
    at org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:1192)
    at org.apache.flink.client.CliFrontend.main(CliFrontend.java:1243)

当我键入以下任一命令时:

代码语言:javascript
复制
./bin/flink run ./ -c myMain myApp.jar
./bin/flink run ./ -c myMain.class myApp.jar
./bin/flink run ./ -c myMain.scala myApp.jar
./bin/flink run ./ -c my.package.myMain myApp.jar
./bin/flink run ./ -c my.package.myMain.class myApp.jar
./bin/flink run ./ -c my.package.myMain.scala myApp.jar

我得到以下错误:

代码语言:javascript
复制
JAR file is not a file: .

Use the help option (-h or --help) to get help on the command.

以上命令既不适用于-c,也不适用于--class。我使用IntelliJ,并使用Build Module from Dependencies选项编译应用程序。我做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2016-07-02 22:44:27

提交JAR的正确方法是:

代码语言:javascript
复制
bin/flink run -c my.package.myMain myApp.jar

您必须在JAR文件之前指定参数(如-c)。最初您会得到错误消息,因为./被解释为JAR,而该行的其余部分被忽略。

-p参数是可选的。您的最后一个示例可以工作,因为参数顺序是正确的,而不是因为并行标志。

票数 13
EN

Stack Overflow用户

发布于 2016-05-27 17:38:38

我找出了问题所在。Flink需要将并行度作为参数传递,否则会出现程序调用异常。下面的命令对我有效:

代码语言:javascript
复制
./bin/flink run -p2 --class myMain myApp.jar
票数 2
EN

Stack Overflow用户

发布于 2018-04-04 06:22:24

您必须在pom文件中提到入口点类。参见pom文件snippety中的以下部分

代码语言:javascript
复制
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.xyz.myMain</mainClass>
</transformer>
</transformers>

请检查下面的代码片段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37453262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档