我正在尝试在Windows上运行Kafka消息队列。
我在本教程中使用了https://dzone.com/articles/running-apache-kafka-on-windows-os
当我尝试使用comand运行它时 - 。\ bin \ windows \ kafka-server-start.bat。\ config \ server.properties
我收到一个错误: 输入行太长。 该命令的语法不正确。
kafka location - C:\ kafka_2.11-1.0.0
答案 0 :(得分:5)
我已将所有内容复制到C:/ tools / kafka,并且工作正常。问题的确是通往卡夫卡的路太长。
答案 1 :(得分:4)
这是因为路径的长度很长,因为文件夹名称为“kafka_2.11-1.0.0'”。只需将文件夹重命名为小型文件夹,例如“kafka'。
”答案 2 :(得分:2)
只需将Kafka路径移动到更小的根路径即可解决此问题。例如“ C:\ Kafka”
答案 3 :(得分:1)
对我来说,它仅在将Kafka文件夹保留在C目录下后才起作用,因此路径看起来像C:\ Kafka。我确信这会起作用。
答案 4 :(得分:1)
对于Windows,只需保持Kafka文件夹路径短即可 例如-D / dev / kafka / bin / windows
答案 5 :(得分:1)
我尝试使用下面的命令,但给了我同样的错误
C:\ kafka>。\ bin \ windows \ zookeeper-server-start.bat。\ config \ zookeeper.properties
之所以会这样,是因为当我们在同一cmd上连续执行同一命令时,路径会在类路径中追加。
关闭命令提示符,然后再次打开,然后启动Zookeeper服务器。
答案 6 :(得分:0)
我正在使用勺子。更改 ...bin\windows\kafka-run-class.bat 如下(kudos Midiman)为我修复了它:
@REM rem Classpath addition for kafka-core dependencies
@REM for %%i in ("%BASE_DIR%\core\build\dependant-libs-%SCALA_VERSION%\*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\core\build\dependant-libs-%SCALA_VERSION%\*"
@REM rem Classpath addition for kafka-examples
@REM for %%i in ("%BASE_DIR%\examples\build\libs\kafka-examples*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\examples\build\libs\*"
@REM rem Classpath addition for kafka-clients
@REM for %%i in ("%BASE_DIR%\clients\build\libs\kafka-clients*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\clients\build\libs\*"
@REM rem Classpath addition for kafka-streams
@REM for %%i in ("%BASE_DIR%\streams\build\libs\kafka-streams*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\streams\build\libs\*"
@REM rem Classpath addition for kafka-streams-examples
@REM for %%i in ("%BASE_DIR%\streams\examples\build\libs\kafka-streams-examples*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\streams\examples\build\libs\*"
@REM for %%i in ("%BASE_DIR%\streams\build\dependant-libs-%SCALA_VERSION%\rocksdb*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\streams\build\dependant-libs-%SCALA_VERSION%\*"
@REM rem Classpath addition for kafka tools
@REM for %%i in ("%BASE_DIR%\tools\build\libs\kafka-tools*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\tools\build\libs\*"
@REM for %%i in ("%BASE_DIR%\tools\build\dependant-libs-%SCALA_VERSION%\*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\tools\build\dependant-libs-%SCALA_VERSION%\*"
for %%p in (api runtime file json tools) do (
@REM for %%i in ("%BASE_DIR%\connect\%%p\build\libs\connect-%%p*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\connect\%%p\build\libs\*"
if exist "%BASE_DIR%\connect\%%p\build\dependant-libs\*" (
call :concat "%BASE_DIR%\connect\%%p\build\dependant-libs\*"
)
)
@REM rem Classpath addition for release
@REM for %%i in ("%BASE_DIR%\libs\*") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\libs\*"
@REM rem Classpath addition for core
@REM for %%i in ("%BASE_DIR%\core\build\libs\kafka_%SCALA_BINARY_VERSION%*.jar") do (
@REM call :concat "%%i"
@REM )
call :concat "%BASE_DIR%\core\build\libs\*"
答案 7 :(得分:0)
我也有这个问题。您可以看到,调试bat文件时,在调用返回此错误的命令并使用相对路径调用该命令之前更改目录不会影响结果! 问题是CLASSPATH变量。对我来说,最简单的方法是使用以下命令:
subst K: <absolute-long-path-to-kafka-dir-with-version>
这样,我可以切换到该虚拟驱动器cd /d K:
中并执行脚本而不会出现问题:
K:\bin\windows\kafka-server-start.bat K:\config\server.properties
我写了一个包装脚本,该脚本在再次执行之前删除了CLASSPATH变量,因为每次执行后都会附加值(相同的cmd.exe)。
set CLASSPATH=
cd /d K:
K:\bin\windows\kafka-server-start.bat K:\config\server.properties
答案 8 :(得分:0)
关闭Zookeeper和Kafka cmd窗口并再次打开它对我来说是有效的。我尝试了除powershell以外的所有其他选项。
答案 9 :(得分:0)
如果有kafka_2.13-2.5.0
,请删除Kafka
,并保持文件夹名称尽可能简单,如C:\kafka
,并确保路径中没有空格。
有效示例:文件夹位于C:\kafka 2\
中。
不起作用的示例:文件夹位于<ToolBar>
<Button Content="{x:Static strings:Resource.NewCustomer}" Command="{Binding NewCustomerDelegateCommand}"/>
</ToolBar>
中。
答案 10 :(得分:0)
我尝试提取下载的Kafka zip文件联系人
C:\Kafka and ran the Kafka-server-start.bat
在命令提示符下(不要以管理员身份运行命令提示符),并且有效。
以管理员身份运行命令提示符对我造成了问题。
答案 11 :(得分:0)
将kafka放在驱动器的根附近,使其路径非常短。
当您运行Windows目录中包含的这些Kafka批处理文件时,它们会与您的环境变量(类路径之一)混为一谈,并且可以创建一个很长的输入行来实际运行命令/ jar。
还要像其他人指出的那样,确保您下载了二进制文件(是的,即使在Kafka网站上它被称为Scala二进制文件,并且在任何地方都没有提到Windows,这会使人们感到困惑),而不是源代码。同样使普通用户感到困惑的是,源分发在未压缩时看起来类似于二进制分发,例如具有所有批处理文件,但它们不会运行。
答案 12 :(得分:0)
'kafka-run-class.bat'文件执行一堆CLASSPATH:concat调用,这些调用会使CLASSPATH变得很长..取决于您的环境..太长了!
将kafka-run-class.bat编辑为: 完全不会与CLASSPATH混淆-在父级中进行设置 -要么- 将其设置为仅连接所有jar的kafka libs文件夹:libs / *
答案 13 :(得分:0)
将kafka文件夹重命名为一些较短的名称,例如kafka2。 打开一个新的命令提示符(不要使用现有/打开的命令提示符)
答案 14 :(得分:0)
将所有文件放入其他驱动器(如D:或E :)中,然后运行命令
答案 15 :(得分:0)
以上两个选项均不适用于我。
我刚刚将一个解压缩的目录移动到C:/驱动器,并以 Administrator (管理员)模式启动了Power Shell,并尝试了所需的命令,Zookeeper和Broker顺利启动。
答案 16 :(得分:0)
Windows命令行中的命令执行时间过长。 请改用Powershell。
答案 17 :(得分:-1)
从 Powershell 窗口运行 common .\bin\windows\kafka-server-start.bat .\config\server.propertie,它在 Window 上运行没有任何问题。
对于类似的错误,对于zookeeper,我运行了从https://zookeeper.apache.org/doc/r3.6.2/zookeeperStarted.html下载的zookeeper zkserver.cmd