WSL环境启动ZooKeeper遇目录错误:Java路径异常求助
核心错误原因
你遇到的错误/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java/bin/java: cannot execute: Not a directory,本质是JAVA_HOME路径配置错误——你把JAVA_HOME指向了Java的可执行文件路径(比如/.../bin/java),导致Kafka启动脚本拼接路径时重复了/bin/java,最终生成了无效的嵌套路径。
分步解决
确认Java的正确安装路径
在WSL终端执行命令:update-alternatives --list java正常输出类似:
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java对应的JAVA_HOME应该是去掉末尾
/jre/bin/java的路径,即/usr/lib/jvm/java-8-openjdk-amd64。修正JAVA_HOME配置
打开你修改过的配置文件(比如~/.bashrc或~/.profile),把错误的export JAVA_HOME="/path/to/java8"替换为正确路径:export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" export PATH="$JAVA_HOME/bin:$PATH"执行以下命令让配置生效:
source ~/.bashrc验证配置有效性
执行以下命令确认Java环境正常:echo $JAVA_HOME $JAVA_HOME/bin/java -version能正确输出Java 8的版本信息即为配置成功。
修正Zookeeper配置错误
你在Zookeeper配置里写的listeners=PLAINTEXT://127.0.0.1:9092是错误的——9092是Kafka的默认端口,Zookeeper的默认端口是2181,应改为:listeners=PLAINTEXT://127.0.0.1:2181 dataDir=/path/to/your/zookeeper/data/directory # 替换为你创建的zookeeper数据目录绝对路径弃用Windows版Java
WSL是Linux兼容环境,必须使用Linux版OpenJDK,你之前通过sudo apt install openjdk-8-jdk安装的版本是正确的,无需切换到Windows版Java。
重新启动Zookeeper
完成上述修正后,在Kafka主目录执行启动命令:
bin/zookeeper-server-start.sh config/zookeeper.properties
内容的提问来源于stack exchange,提问作者j stevenage

