【问题标题】:Running Kafka on Windows 10 fails: The system cannot find the path specified在 Windows 10 上运行 Kafka 失败:系统找不到指定的路径
【发布时间】:2022-01-01 22:12:53
【问题描述】:

我正在尝试在本地运行 Kafka。我已经安装并运行了 Zookeeper。我已经下载了 Kafka 2.11-1.1.0 的二进制文件。我已将server.config 中的日志位置调整为有效路径。当我运行.\bin\windows\kafka-server-start.bat .\config\server.properties 时,我收到一条错误提示

系统找不到指定的路径。

我可以看到这两个文件都存在于我的计算机上的正确位置 - 我应该如何进行故障排除?

【问题讨论】:

标签: windows apache-kafka


【解决方案1】:

我在运行 kafka-server-start.bat 命令时遇到了这个问题。我仔细检查以确保 kafka 二进制文件路径中没有空格以及 JAVA_HOME 中的正确语法。

终于意识到问题出在 JAVA_HOME 路径中有空格。

C:\Program Files\Java\jdk1.8.0_144

程序和文件之间有一个空格。我更改了 Java 的目录并将 JAVA_HOME 变量更新为

C:\Java\jdk1.7.0_51

此更改解决了我的问题。我使用 setx 命令更改了 JAVA_HOME 中的值。

setx -m JAVA_HOME "C:\Java\jdk1.7.0_51"

【讨论】:

  • 如果不想移动Java,可以设置JAVA_HOME为缩短路径,例如:set JAVA_HOME=C:\Progra~1\Java\jdk-11.0.1
【解决方案2】:

我也有这个问题。在我的情况下,我在 C:\Java\bin 中安装了 java,并将 JAVA_HOME 定义为

JAVA_HOME=c:\Java\bin

我需要改变

c:\Tools\kafka_2.12-2.2.0\bin\kafka-run-class.sh

第 224 到 229 行

# Which java to use
if [ -z "$JAVA_HOME" ]; then
  JAVA="java"
else
  JAVA="$JAVA_HOME/bin/java"
fi

到这里:

# Which java to use
if [ -z "$JAVA_HOME" ]; then
  JAVA="java"
else
  JAVA="$JAVA_HOME/java"
fi

因为它将 java 分配给 C:\Java\bin/bin/java 然后在同一文件的 306 上失败。

顺便说一句:我在 Windows 中使用 git bash shell。这允许我运行 bin/*.sh 脚本而不是 bin/windows/*.bat 脚本

我也改变了

中 dataDir 的值

C:\Tools\kafka_2.12-2.2.0\config\zookeeper.properties

dataDir=C:\\Tools\\kafka_2.12-2.2.0\\zookeeper-data

【讨论】:

  • 对于Windows .bat文件,要修改的行是161
  • @WalidChiko 类似kafka-run-class.bat,如果我没记错的话。
  • 是的!我尝试了您的方法,但出现此错误: C:\kafka>.\bin\windows\kafka-server-start.bat .\config\zookeeper.properties [2020-07-08 17:55:15,487] INFO Registered kafka :type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) [2020-07-08 17:55:15,710] 错误退出 Kafka 由于致命异常 (kafka.Kafka$) org.apache.kafka.common.config。 ConfigException:缺少没有默认值的必需配置“zookeeper.connect”。在 org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:477) ....@Frakcool
  • 您是否更改了zookeepet.properties 文件? @WalidChiko tbh 我不确定会发生什么,我建议您提出一个新问题。我不是 kafka 专家
【解决方案3】:

原来这个错误是由kafka-run-class.bat 抛出的,因为系统变量中JAVA_HOME 的路径格式不正确(在我的例子中,我已经添加了/bin。)从路径中删除/bin,并它是一个现有的 Java 安装文件夹,使一切运行良好。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,但这不是因为JAVA_HOME 环境变量的路径格式错误。

    这是因为我在包含空格的路径中提取了我的 kafka 二进制文件!

    首先它在这里:

    E:\Apache Kafka\kafka_2.11-2.1.0

    然后我将它重新定位到这个新路径中(没有任何空格!):

    E:\ApacheKafka\kafka_2.11-2.1.0

    问题解决了!

    希望这会有所帮助。

    【讨论】:

      【解决方案5】:

      正如许多人所提到的,如果您运行的任何 kafka *.bat 脚本(包括 zookeeper)引用了错误的 JAVA_HOME 系统变量或包含空格的系统变量,就会发生这种情况。

      您可以通过将 JAVA_HOME 更改为缩短的路径名来解决此问题。 例如

      set JAVA_HOME=C:\Progra~1\Java\jdk-11.0.1
      

      附言

      为方便起见,我创建了一个 CMD 桌面快捷方式,将 JAVA_HOME 设置为适合 Kafka,并将 CD 设置为我的 kafka 安装。我的桌面快捷方式如下:

      %windir%\System32\cmd.exe /k set JAVA_HOME=C:\Progra~1\Java\jdk-11.0.1&  f: & cd f:\kafka\kafka_2.12-2.2.0
      

      【讨论】:

        【解决方案6】:

        要添加到现有答案,您还可以在运行 Kafka 提供 zookeeper-server-start 命令(以及 bin/windows 文件夹中的几乎所有其他脚本)时遇到错误,因为它还利用了 @ 987654323@,因此依赖于有效的JAVA_HOME 环境变量路径。

        cd D:\Downloads\kafka
        .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
        

        【讨论】:

          【解决方案7】:

          迟到的回复,但我希望它对某人有所帮助。我遇到了同样的问题,发现有人将 JAVA 更新到了较新的版本,即我的 JAVA_HOME 系统变量指向一个不存在的文件夹。奇怪的是我没有做过,但上面的答案启发了我检查它。

          【讨论】:

            【解决方案8】:

            我遇到了同样的问题,并通过以下步骤进行了修复:

            • 确保您的环境变量为:

              JAVA_HOME=C:\Program Files\Java\jdk1.8.0_261

              ZOOKEEPER_HOME=C:\apache-zookeeper-3.6.2

              KAFKA_HOME=C:\kafka_2.13-2.7.0

            • 编辑系统变量中的“路径”并输入:
              %JAVA_HOME% / bin, %ZOOPKEEPER_HOME / bin and %KAFKA_HOME% / bin

            • 现在,打开终端,运行 zoopkeeper 和 kafka

              Zoopkeeperzkserver

              Kafkabin\windows\kafka-server-start.bat .\config\server.properties

            它运行没有任何问题和错误。

            【讨论】:

              【解决方案9】:

              我已经被这个困扰了很长一段时间了。以下是我解决问题所遵循的步骤:

              • 在环境变量中将 JAVA_HOME 设置为 C:\Program Files\Common Files\Oracle\Java\javapath
              • 如果上述方法不能解决问题,请检查 kafka/bin/kafka-run-class.sh JAVA=$JAVA_HOME/bin/java 是否为用过的。在这种情况下,您可能需要简单地在 javapath 下创建一个文件夹 bin 并将 java.exe 复制到其中。这应该可以解决问题。

              【讨论】:

                【解决方案10】:

                我尝试了所有的解决方案,我改变了 JAVA_HOME 不同的方法,它没有工作。 解决方案: 以管理员身份启动 cmd.exe 并执行命令: 设置 JAVA_HOME=%ProgramFiles%\Java\jdk-17.0.1 (只会选择你的 jdk 版本)

                【讨论】:

                  【解决方案11】:

                  一个对我有用的简单解决方案 - 打开 kafka-run-class.sh 文件,转到第 306 行,将 $JAVA 括在 "" 中。

                  exec "$JAVA" $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"

                  如果您的 Java 路径中有空格,则会出现此问题。从 Java 安装路径中删除空格或将路径用双引号括起来。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-08-31
                    • 1970-01-01
                    • 2012-10-30
                    • 1970-01-01
                    • 2018-03-14
                    • 1970-01-01
                    相关资源
                    最近更新 更多