【发布时间】:2016-09-24 00:14:04
【问题描述】:
我已经使用 Scala 2.11.7 创建了一个带有 Apache FLink 1.0.3 的应用程序,我想在本地测试它(单个 jvm)。所以我按照网站上的说明做了以下操作:
./bin/start-local.sh
tail log/flink-*-jobmanager-*.log
它启动得很好,我可以在 localhost:8081 看到 Web 界面。 然后,我尝试提交我的申请,但我收到异常或奇怪的消息。例如,当我键入以下任一命令时:
./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
我得到以下异常:
------------------------------------------------------------
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)
当我键入以下任一命令时:
./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
我收到以下错误:
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 选项编译了应用程序。我做错了什么?
【问题讨论】:
-
会不会是
myApp.jar不包含MyMain类?您能否运行jar -tf myApp.jar并验证它是否包含上述类以及该类是否包含main方法? -
我使用了你提到的命令,但由于一个奇怪的原因,我找不到我创建的任何类。为什么会这样?
-
我使用 WinRar 打开 jar 并查看其内容,我可以找到我项目的每个类,我可以找到 MyMain.class 和 MyMain$.class
-
可能是
jar命令无法正确列出内容的问题。这可能表明您的 jar 文件已损坏。 -
对不起,我之前的评论不正确。我终于可以用你提供的命令找到我的主类了。我很确定 jar 文件没有损坏。
标签: scala apache-flink