Я пытаюсь включить некоторые jar-файлы, требуемые моей топологией, в jar-файл, который я развертываю в Storm. Когда я создаю файл jar с помощью Ant с задачей manifestclasspath, я получаю следующий манифест:
Ant-Version: Apache Ant 1.9.5
Created-By: 1.8.0_45-b14 (Oracle Corporation)
Main-Class: org.softwarematters.storm.MyTopology
Class-Path: ../build/lib/kafka-clients-0.8.2.1.jar ../build/lib/kafka_
2.11-0.8.2.1.jar ../build/lib/log4j-1.2.16.jar ../build/lib/metrics-c
ore-2.2.0.jar ../build/lib/scala-library-2.11.5.jar ../build/lib/stor
m-kafka-0.9.5.jar ../build/lib/zookeeper-3.4.6.jar
Пути в записи Class-Path выглядят неправильно. Топология развертывается успешно, но когда я отправляю данные в Kafka, я получаю ClassNotFoundException: storm.kafka.KafkaSpout в журналах Storm.
Я изменил манифест, чтобы он выглядел так:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.5
Created-By: 1.8.0_45-b14 (Oracle Corporation)
Main-Class: org.softwarematters.storm.MyTopology
Class-Path: . lib/kafka-clients-0.8.2.1.jar lib/kafka_2.11-0.8.2.1.jar
lib/log4j-1.2.16.jar lib/metrics-core-2.2.0.jar lib/scala-library-2.1
1.5.jar lib/storm-kafka-0.9.5.jar lib/zookeeper-3.4.6.jar
Это также успешно развертывается, но дает ту же ошибку, когда я пытаюсь передать сообщения.
Как я могу создать файл jar, который содержит эти зависимости и правильно работает в Storm? Я не хочу добавлять jar-файлы в каталог Storm lib, но это единственная рабочая конфигурация, которую я нашел.