此刻,我正在尝试运行我的第一个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文件。所以我做错了吗?
预先感谢
答案 0 :(得分:3)
您需要指定完整的类名,例如org.apache.flink.examples.java.clustering.KMeans
。
请注意,如果JAR文件未指定要在其清单中运行的类,则仅需要使用-c标志。