我正在尝试了解Apache Flink CEP程序,以监控数据中心的机架温度,如Flink Official Documentation所述。但是当我按照步骤使用mvn clean package
创建一个jar并尝试使用命令
java -cp "../cep-monitoring-1.0.jar" org.stsffap.cep.monitoring.CEPMonitoring
但是我收到以下错误,
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.api.functions.source.SourceFunction
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
我尝试了如here所述的给出类路径的不同变体,但得到了相同的错误。有人能指出我在运行程序时的错误吗?
答案 0 :(得分:2)
将作业提交到本地Flink群集:
/path/to/flink-1.4.0/bin/start-local.sh
/path/to/flink-1.4.0/bin/flink run -c com.package.YourClass /path/to/jar.jar
或者,您只需从IDE运行作业:
在这种情况下,您的工作将在Flink环境中运行。 查看Flink的示例:https://github.com/apache/flink/blob/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/wordcount/WordCount.java
答案 1 :(得分:1)
cep example使用flink 1.3.2版。所以这是运行它的步骤。
wget
flink-1.3.2
,这将启动flink群集。做./bin/start-local.sh
。cd ..
和git clone
克隆answer。 cd
来构建项目。这将创建mvn clean package
目录。target
,开始此过程。../flink-1.3.2/bin/flink run target/cep-monitoring-1.0.jar
(*将替换为特定的用户详细信息,按Tab键自动填充这些内容)。以下是示例输出
tail -f ../flink-1.3.2/log/flink-*-jobmanager-*.out