2016-05-26 11 views
1

私はScala 2.11.7を使用してApache Flink 1.0.3でアプリケーションを作成しました。これをローカルにテストしたい(単一のjvm)。だから私はウェブサイトで述べたように次のようにした:Apache Flink - org.apache.flink.client.program.ProgramInvocationException

./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を使用し、DependenciesからBuild Moduleオプションを使用してアプリケーションをコンパイルしました。私は間違って何をしていますか?

+0

'myApp.jar'に' MyMain'クラスが含まれていないことがありますか? 'jar -tf myApp.jar'を実行し、それに上記のクラスが含まれていることと、このクラスに' main'メソッドが含まれていることを確認できますか? –

+0

あなたが言及したコマンドを使用しました。私が作成したクラスを見つけることができなかった奇妙な理由のために。なぜそれが起こっているのですか? –

+0

私はWinRarを使ってjarファイルを開き、その内容を見ました。プロジェクトのすべてのクラスを見つけることができ、MyMain.classとMyMain $ .classを見つけることができました。 –

答えて

0

私は何が間違っているかを考え出しました。 Flinkは、並列度を引数として渡す必要がありました。それ以外の場合は、プログラム呼び出し例外がありました。以下のコマンドは、私の仕事:

./bin/flink run -p2 --class myMain myApp.jar 
4

をあなたのJARを提出するための正しい方法は次のとおりです。

bin/flink run -c my.package.myMain myApp.jar 

あなたはJARファイルの前(-cのような)の引数を指定する必要があります。 ./がJARと解釈され、残りの行は無視されたため、最初はエラーメッセージが表示されます。

引数は省略可能です。最後の例は、引数の順序が正しく、並列処理フラグのためにではないために機能します。

+0

ありがとう、これは働いた。 :) – Kulasangar

関連する問題