在apache flink中运行生成的jar文件

时间:2018-09-09 12:48:21

标签: macos apache apache-flink

此刻,我正在尝试运行我的第一个flink应用程序。我已经在IDE中测试了Java文件(KMeans.java),它可以完美运行,但是我无法在命令行中以jar形式运行该Java文件。 使用mvn clean package成功创建了该版本。 但是,如果我在命令行flink run -c KMeans name.jar中运行jar文件 出现此错误消息:

  

程序完成,但有以下异常:

     

org.apache.flink.client.program.ProgramInvocationException:   在jar文件中找不到该程序的入口点类'KMeans'。     在   org.apache.flink.client.program.PackagedProgram.loadMainClass(PackagedProgram.java:617)     在   org.apache.flink.client.program.PackagedProgram。(PackagedProgram.java:199)     在   org.apache.flink.client.cli.CliFrontend.buildProgram(CliFrontend.java:856)     在org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:206)     在   org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:1044)     在   org.apache.flink.client.cli.CliFrontend.lambda $ main $ 11(CliFrontend.java:1120)     在java.security.AccessController.doPrivileged(本机方法)在   javax.security.auth.Subject.doAs(Subject.java:422)在   org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1754)     在   org.apache.flink.runtime.security.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)     在   org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1120)   引起原因:java.lang.ClassNotFoundException:KMeans在   java.net.URLClassLoader.findClass(URLClassLoader.java:381)在   java.lang.ClassLoader.loadClass(ClassLoader.java:424)在   java.lang.ClassLoader.loadClass(ClassLoader.java:357)在   java.lang.Class.forName0(本机方法),位于   java.lang.Class.forName(Class.java:348)在   org.apache.flink.client.program.PackagedProgram.loadMainClass(PackagedProgram.java:614)     ...还有10个

因此,我查找了生成的目标文件夹,并且在classes文件夹中有一个KMeans.class文件。所以我做错了吗?

预先感谢

1 个答案:

答案 0 :(得分:3)

您需要指定完整的类名,例如org.apache.flink.examples.java.clustering.KMeans

请注意,如果JAR文件未指定要在其清单中运行的类,则仅需要使用-c标志。