Невозможно запустить класс с помощью kafka-run-class.bat в Windows - PullRequest
0 голосов
/ 27 сентября 2019

Я создал демонстрационное приложение, используя KafkaStream API.Попытка запустить приложение с использованием файла kafka-run-class.bat, но с ошибкой «Не удалось найти или загрузить основной класс com.kafka.StreamApp»

Это путь к моему классу: «C: \ Users\ ankit.srivastava \ eclipse-workspace \ kafka-demo \ src \ main \ java \ com \ kafka "

Я установил свою переменную среды CLASSPATH как:

" C: \ Users \ankit.srivastava \ eclipse-workspace \ kafka-demo \ src \ main \ java "

Команда, которую я пытаюсь запустить, чтобы запустить приложение из" C: \ Users \ ankit.srivastava \ Documents \ Kafka \ kafka "":

" bin \ windows \ kafka-run-class.bat com.kafka.StreamApp "

public class StreamApp {


public static void main(String[] args) {

    Properties props = new Properties();
    props.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-application");
    props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
    props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());

    StreamsBuilder builder = new StreamsBuilder();
    KStream<String, String> textLines = builder.stream("TextLinesTopic");
    KTable<String, Long> wordCounts = textLines
        .flatMapValues(textLine -> Arrays.asList(textLine.toLowerCase().split("\\W+")))
        .groupBy((key, word) -> word)
        .count(Materialized.<String, Long, KeyValueStore<Bytes, byte[]>>as("counts-store"));
    wordCounts.toStream().to("WordsWithCountsTopic", Produced.with(Serdes.String(), Serdes.Long()));

    KafkaStreams streams = new KafkaStreams(builder.build(), props);
    streams.start();
}

}

Поскольку папка моего проекта добавлена ​​вСценарий пакетной переменной CLASSPATH должен был найти класс и запустить приложение, но оно выдало ошибку
«Не удалось найти или загрузить основной класс com.kafka.StreamApp»

1 Ответ

1 голос
/ 27 сентября 2019

Вам не нужен kafka-run-class для запуска вашего собственного Потребителя или Производителя.Вы должны иметь возможность развертывать и запускать свой код независимо от того, установлен ли Kafka на любой машине.

При этом вы, как обычно, запускаете код, используя java.

Что касается вашей ошибки, это не относится к Кафке.Проще говоря, вы указали CLASSPATH на файлы Java, а не на скомпилированные файлы классов.

Исходя из пути к файлам, может показаться, что вы используете Maven или Gradle, поэтому я предлагаю использовать встроенный файл JARиз этих

И исходя из ваших предыдущих вопросов, я бы предложил использовать Spring-Kafka или Spring Cloud Streams, чтобы упростить настройку вашего кода

...