Apache Flink错误java.lang.ClassNotFoundException

时间:2017-11-20 23:35:34

标签: java maven apache-kafka apache-flink

有人可以帮我解决以下错误吗?我认为版本存在一些问题,但我不知道如何解决它。 我正在尝试运行Apache Flink,我使用Kafka主题作为输入 尝试运行Flink时出现以下错误:

错误:

  

线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / flink / util / press at ats.cs63上的org.apache.flink.cep.pattern.Pattern.where(Pattern.java:130)。 CEPMonitor.CEPMonitoring.main(CEPMonitoring.java:55)由java.lang上的java.net.URLClassLoader.findClass(URLClassLoader.java:381)中的java.lang.ClassNotFoundException:org.apache.flink.util.Preconditions引起。 class.Loader.loadClass(ClassLoader.java:424)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:335)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 2 more

的pom.xml:

<dependencies>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_2.10</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-cep_2.11</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>0.9.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-kafka-0.9_2.10</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.6.2</version>
    </dependency>
</dependencies>

2 个答案:

答案 0 :(得分:1)

您应该将flink-streaming-java_2.10和flink-connector-kafka-0.9_2.10依赖项更新为1.3.2版,以匹配CEP库的版本。并且对scala版本保持一致 - 为所有依赖项选择2.10或2.11。

自1.0.2以来,CEP已经很多,所以我不建议降级CEP。

答案 1 :(得分:0)

您的依赖项flink-cep_2.11使用scala 2.11和flink 1.3.2,而flink-streaming-java_2.10flink-connector-kafka-0.9_2.10使用scala 2.10和flink 1.0.2。

您可以降级 flink-cep获取所有deps的scala 2.10和flink 1.0.2:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-cep_2.10</artifactId>
    <version>1.0.2</version>
</dependency>

这将为您的pom.xml提供最小差异,但您将从2016年初开始使用库。因此,更好的解决方案是升级其他两个版本到1.3版本.2和scala 2.11:

<dependencies>
  <dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-streaming-java_2.11</artifactId>
    <version>1.3.2</version>
  </dependency>
  <dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-cep_2.11</artifactId>
    <version>1.3.2</version>
  </dependency>
  <dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>0.9.0.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kafka-0.9_2.11</artifactId>
    <version>1.3.2</version>
  </dependency>
  <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.6.2</version>
  </dependency>
</dependencies>