无法在 windows 上使用 kafka-运行-class.bat 运行 class
Not able to run a class using kafka-run-class.bat on windows
我使用 KafkaStream 创建了一个演示应用 API。
尝试使用 kafka-运行-class.bat 文件 运行 应用程序但出现错误
"Could not find or load main class com.kafka.StreamApp"
这是我的 class 的路径:
"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 变量批处理脚本应该已经找到 class 并启动应用程序但出现错误
"Could not find or load main class com.kafka.StreamApp"
您不需要 kafka-运行-class 来 运行 您自己的消费者或生产者。您应该能够部署和 运行 您的代码,而无需在任何机器上安装 Kafka。
也就是说,您 运行 代码只是使用 java
,照常。
关于您的错误,它不是 Kafka 特有的。简单地说,您已将 CLASSPATH 指向 Java 个文件,而不是编译的 class 个文件。
根据文件路径,您可能正在使用 Maven 或 Gradle,因此我建议使用从这些文件构建的 JAR 文件
根据您之前的问题,我建议使用 Spring-Kafka 或 Spring Cloud Streams 来简化代码的配置
我使用 KafkaStream 创建了一个演示应用 API。 尝试使用 kafka-运行-class.bat 文件 运行 应用程序但出现错误 "Could not find or load main class com.kafka.StreamApp"
这是我的 class 的路径: "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 变量批处理脚本应该已经找到 class 并启动应用程序但出现错误
"Could not find or load main class com.kafka.StreamApp"
您不需要 kafka-运行-class 来 运行 您自己的消费者或生产者。您应该能够部署和 运行 您的代码,而无需在任何机器上安装 Kafka。
也就是说,您 运行 代码只是使用 java
,照常。
关于您的错误,它不是 Kafka 特有的。简单地说,您已将 CLASSPATH 指向 Java 个文件,而不是编译的 class 个文件。
根据文件路径,您可能正在使用 Maven 或 Gradle,因此我建议使用从这些文件构建的 JAR 文件
根据您之前的问题,我建议使用 Spring-Kafka 或 Spring Cloud Streams 来简化代码的配置