本文介绍了线程“main"中的异常java.lang.NoClassDefFoundError: backtype/storm/spout/MultiScheme的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将 Storm 与 Kafka 集成.我正在使用 KafkaSpout 运行 Storm 拓扑.这是基本的字数统计拓扑.我使用 Apache Kafka 作为源和风暴来处理数据.在提交拓扑时,我面临这些问题.我对 Kafka 和 Storm 很陌生.请建议我在以下代码中需要做的更改.

I am a trying to integrate Storm with Kafka. I am running a Storm topology using KafkaSpout. This is the basic word-count topology. I am using Apache Kafka as the source and storm for processing the data. While submitting the topology I am facing these issues. I am very new to Kafka and Storm. Please suggest me the changes I need to do in the following code.

这是我的代码:

public class TopologyMain {

private static final String SENTENCE_SPOUT_ID = "kafka-sentence-spout";
  private static final String WORD_NORMALIZER = "word-normalizer";
  private static final String WORD_COUNTER = "word-counter";
  private static final String TOPOLOGY_NAME = "kafka-word-count-topology";


  public static void main(String[] args) throws InterruptedException, AlreadyAliveException, InvalidTopologyException {

      int numSpoutExecutors = 1;

      KafkaSpout kspout = buildKafkaSentenceSpout();
        WordNormalizer normalizeBolt = new WordNormalizer();
        WordCounter countBolt = new WordCounter();



    //Topology definition
    TopologyBuilder builder = new TopologyBuilder();

    builder.setSpout(SENTENCE_SPOUT_ID, kspout, numSpoutExecutors);
    builder.setBolt(WORD_NORMALIZER, new WordNormalizer()).shuffleGrouping(SENTENCE_SPOUT_ID);
    builder.setBolt(WORD_COUNTER, new WordCounter(),1).fieldsGrouping(WORD_NORMALIZER, new Fields("word"));

    //Configuration
    Config conf = new Config();
    //System.setProperty("storm.jar", "/home/raremile/.m2/repository/org/apache/storm/storm-core/0.9.3/storm-core-0.9.3.jar");
    StormSubmitter.submitTopology(TOPOLOGY_NAME, conf, builder.createTopology());
    conf.setDebug(false);

}

  private static KafkaSpout buildKafkaSentenceSpout() {
        String zkHostPort = "localhost:2181";
        String topic = "sentences";

        String zkRoot = "/acking-kafka-sentence-spout";
        String zkSpoutId = "acking-sentence-spout";
        ZkHosts zkHosts = new ZkHosts(zkHostPort);

        SpoutConfig spoutCfg = new SpoutConfig(zkHosts, topic, zkRoot, zkSpoutId);
        KafkaSpout kafkaSpout = new KafkaSpout(spoutCfg);
        return kafkaSpout;
      }
}

这是我得到的错误:

 Exception in thread "main" java.lang.NoClassDefFoundError: backtype/storm/spout/MultiScheme
at TopologyMain.buildKafkaSentenceSpout(TopologyMain.java:57)
at TopologyMain.main(TopologyMain.java:28)
Caused by: java.lang.ClassNotFoundException: backtype.storm.spout.MultiScheme
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 2 more

推荐答案

看起来您错过了类路径中的 storm-core jar.下载并添加它.

Looks like you miss the storm-core jar in your classpath. Download and add it.

这篇关于线程“main"中的异常java.lang.NoClassDefFoundError: backtype/storm/spout/MultiScheme的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-29 17:10