Java NoClassDefFoundError:Apache Flink复杂事件处理

时间:2018-02-22 03:45:19

标签: java jar noclassdeffounderror apache-flink complex-event-processing

我正在尝试了解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所述的给出类路径的不同变体,但得到了相同的错误。有人能指出我在运行程序时的错误吗?

2 个答案:

答案 0 :(得分:2)

将作业提交到本地Flink群集:

  1. 运行Flink。
  2. /path/to/flink-1.4.0/bin/start-local.sh

    1. 提交作业。
    2. /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版。所以这是运行它的步骤。

  1. 安装apache flink 1.3.2版。 (here来自this repo并提取它)。
  2. cd into wget
  3. flink-1.3.2,这将启动flink群集。做./bin/start-local.sh
  4. 使用cd ..git clone克隆answer
  5. cd来构建项目。这将创建mvn clean package目录。
  6. 运行target,开始此过程。
  7. 在单独的终端中,可以像这样记录输出(假设您与上一步位于同一目录中)../flink-1.3.2/bin/flink run target/cep-monitoring-1.0.jar(*将替换为特定的用户详细信息,按Tab键自动填充这些内容)。
  8. 以下是示例输出

    tail -f ../flink-1.3.2/log/flink-*-jobmanager-*.out