如何使用本地文件而不是Github中的文件?

时间:2017-05-11 13:47:18

标签: java apache-kafka apache-kafka-streams

我正在使用Kafka Streams,我已经运行了找到here的示例流,这很好用。我想知道是否有办法替换以下命令,

./bin/kafka-run-class org.apache.kafka.streams.examples.wordcount.WordCountDemo

使用一个在Github上使用本地文件而不是此源的文件。我尝试从Github复制文件并将其放在本地文件streams中,如下所示:

./bin/kafka-run-class ./streams/WordCountDemo.java

但是它给了我以下错误消息:

Error: Could not find or load main class ..streams.WordCountDemo.java

2 个答案:

答案 0 :(得分:0)

行。 @Pastafari和我说同样的话。

  1. 将github的字数和所有相关的jar / classes / etc复制到本地目录。将它们放入一个源目录,然后编译/运行它们。这是最重要的一步 - 使用步骤1-1B让它们运行。
  2. 一个。将源的目标目录添加到类路径中。这是您的.class文件所在的位置。

    B中。运行使用wordCount类的“./bin/kafka-run-class org.apache.kafka.streams.examples.wordcount.WordCountDemo”。

    一切都在运行......

    1. 将WordCount复制到另一个目录(例如,source2)。对它进行更改。您的WordCount将位于source2(目标目录)\ org \ apache \ kafka \ streams \ examples \ wordcount目录中。您的WordCount将具有相同的包名称。现在有两个WordCount.class副本,但在不同的目录中。
    2. 将类路径更改为“source2; source”这告诉类加载器首先查看source2目录。然后在源代码中搜索剩下的东西。
    3. 运行“./bin/kafka-run-class org.apache.kafka.streams.examples.wordcount.WordCountDemo”您的课程将首先加载。

答案 1 :(得分:0)

您的想法:

Kafka正在使用HTTP从GitHub获取文件WordCountDemo,并将其用作类。

这不是正在发生的事情。

实际发生的事情:

Kafka正在向Java询问一个名为org.apache.kafka.streams.examples.wordcount.WordCountDemo的类。

如果你这样做,你会得到完全相同的课程:

import org.apache.kafka.streams.examples.wordcount.WordCountDemo;

...

WordCountDemo demo = new WordCountDemo(...);

在此命令行中,您没有import语句或类似语句,因此您使用包含该包的完全限定类名。

Java在其类加载器中搜索文件系统右侧的WordCountDemo.class文件。  它很可能位于类路径某处的.jar文件中。

您可以通过编译来创建自己的类(并可选择将其放入JAR中)。

这与普通的Java类加载没什么不同 - 在任何介绍性的Java书籍或教程中都可以阅读它。