很多开发者安装zookeeper的时候,应该会发现到这么一个问题: JAVA_HOME is not set

好的!那么这个是什么意思呢?

就是说你的  JAVA_HOME 变量没有设定

为什么会提示这个呢?

其实zookeeper在启动服务端的时候会基于java环境启动,所以在启动的时候会检测 jdk 是否安装

而在我们开发者的入门过程中,都会设定一下 %JAVA_HOME%的系统变量。

在 zkservice启动的时候,会找%JAVA_HOME%\bin\java.jar 进行java基础环境的启动。所以,如果没有配置的话,就要配置:

如何配置:区分两种系统(自行百度吧)

  Linux: vim /etc/profile 文件修改后,检查是否完成 java  -version

  window:变量添加后,检查是否完成 java -version

好的!按理说完成以上步骤之后,就是已经完成了%JAVA_HOME%的配置。

针对于window8 系统配置完成之后,使用 -version都可以发现正常进行了安装,但是启动的时候依旧报错!JAVA_HOME is not set

这就不能忍了!于是我们看看,zkService 启动的时候,到底做了些什么?

  1、启动加载zkEvn文件,

  2、启动zkService文件,

也就是说,在zkEvn 文件里面可能有JAVA_HOME 的验证,于是我们进去看看

@echo off
REM Licensed to the Apache Software Foundation (ASF) under one or more
REM contributor license agreements. See the NOTICE file distributed with
REM this work for additional information regarding copyright ownership.
REM The ASF licenses this file to You under the Apache License, Version 2.0
REM (the "License"); you may not use this file except in compliance with
REM the License. You may obtain a copy of the License at
REM
REM http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License. set ZOOCFGDIR=%~dp0%..\conf
set ZOO_LOG_DIR=%~dp0%..\logs
set ZOO_LOG4J_PROP=INFO,CONSOLE REM for sanity sake assume Java 1.6
REM see: http://java.sun.com/javase/6/docs/technotes/tools/windows/java.html REM add the zoocfg dir to classpath
set CLASSPATH=%ZOOCFGDIR% REM make it work in the release
SET CLASSPATH=%~dp0..\*;%~dp0..\lib\*;%CLASSPATH% REM make it work for developers
SET CLASSPATH=%~dp0..\build\classes;%~dp0..\build\lib\*;%CLASSPATH% set ZOOCFG=%ZOOCFGDIR%\zoo.cfg @REM setup java environment variables

if not defined JAVA_HOME (
echo Error: JAVA_HOME is not set.
goto :eof
)
if not exist %JAVA_HOME%\bin\java.exe (
echo Error: JAVA_HOME is incorrectly set.
goto :eof
) set JAVA=%JAVA_HOME%\bin\java

果然!这里有校验!而且校验的时候肯定是不存在的,所以输出错误信息:JAVA_HOME is not set.

那么如何解决呢?

既然从系统变量获取获取不到这个变量,那么我们干脆手动设置一下试试?

@echo off
REM Licensed to the Apache Software Foundation (ASF) under one or more
REM contributor license agreements. See the NOTICE file distributed with
REM this work for additional information regarding copyright ownership.
REM The ASF licenses this file to You under the Apache License, Version 2.0
REM (the "License"); you may not use this file except in compliance with
REM the License. You may obtain a copy of the License at
REM
REM http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License. REM for sanity sake assume Java 1.6
REM see: http://java.sun.com/javase/6/docs/technotes/tools/windows/java.html REM add the zoocfg dir to classpath
set CLASSPATH=%ZOOCFGDIR% REM make it work in the release
SET CLASSPATH=%~dp0..\*;%~dp0..\lib\*;%CLASSPATH% REM make it work for developers
SET CLASSPATH=%~dp0..\build\classes;%~dp0..\build\lib\*;%CLASSPATH% set JAVA=D:\java\jdk1.8.0_77\bin\java
set JAVA_HOME=D:\java\jdk1.8.0_77

set ZOOCFG=%ZOOCFGDIR%\zoo.cfg
set ZOOCFGDIR=%~dp0%..\conf
set ZOO_LOG_DIR=%~dp0%..\logs
set ZOO_LOG4J_PROP=INFO,CONSOLE
@REM setup java environment variables if not defined JAVA_HOME (
echo Error: JAVA_HOME is not set.
goto :eof
) if not defined JAVA (
echo Error: ----"%JAVA_HOME%"--- is set.but not found JAVA
goto :eof
)

修改内容如上:

手动设置JAVAHOME 和JAVA 的值,为了查找问题,在判断JAVA的时候,进行JAVAHOME 的值的打印,看看是不是真的设置成功了。

再次启动,果然!成功了!

好的,咱们回顾一下。zkService 启动依赖java的环境,所以必须要能够启动java环境,对应的就是 JDK 安装目录下\bin\java.exe 需要被启动。

所以咱们要告诉JAVA的值

也就是设置:

set JAVA=D:\java\jdk1.8.0_77\bin\java (D:\java\jdk1.8.0_77 这里是你的JDK安装路径
再思考一点,咱们设定
set JAVA_HOME=D:\java\jdk1.8.0_77 
目的其实就是让JAVA能够使用JAVA_HOME的变量的值,所以,既然咱们都手动设定了JAVA的绝对路径,那么其实JAVA_HOME 的设置和判断都可以去掉了。
对应简化内容为:
@echo off
REM Licensed to the Apache Software Foundation (ASF) under one or more
REM contributor license agreements. See the NOTICE file distributed with
REM this work for additional information regarding copyright ownership.
REM The ASF licenses this file to You under the Apache License, Version 2.0
REM (the "License"); you may not use this file except in compliance with
REM the License. You may obtain a copy of the License at
REM
REM http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License. REM for sanity sake assume Java 1.6
REM see: http://java.sun.com/javase/6/docs/technotes/tools/windows/java.html REM add the zoocfg dir to classpath
set CLASSPATH=%ZOOCFGDIR% REM make it work in the release
SET CLASSPATH=%~dp0..\*;%~dp0..\lib\*;%CLASSPATH% REM make it work for developers
SET CLASSPATH=%~dp0..\build\classes;%~dp0..\build\lib\*;%CLASSPATH% set JAVA=D:\java\jdk1.8.0_77\bin\java set ZOOCFG=%ZOOCFGDIR%\zoo.cfg
set ZOOCFGDIR=%~dp0%..\conf
set ZOO_LOG_DIR=%~dp0%..\logs
set ZOO_LOG4J_PROP=INFO,CONSOLE
@REM setup java environment variables if not defined JAVA (
echo Error: not found JAVA
goto :eof
)
总结:这种情况目前只出现在window 8 的系统上,推测window 10 可能也会存在。但是在Linux的环境下,没遇到过。大家可以手动试试,并读懂执行代码,就可以自己修改和编写了。
感谢看官,如果有疑问大家一起讨论,关注或者留言。
 

zookeeper报错 JAVA_HOME is not set的更多相关文章

  1. 启动zookeeper报错:JAVA_HOME is not set

    启动zookeeper时报错JAVA_HOME is not set 看了环境变量,确实配置好了,但是zookeeper竟然没找到 修改bin目录下的zkEnv.cmd关于jdk的一部分 set JA ...

  2. zookeeper报错java.net.ConnectException: Connection refused: no further information

    zookeeper报错java.net.ConnectException: Connection refused: no further information 这是在linux 启动 https:/ ...

  3. zookeeper报错: org.I0Itec.zkclient.exception.ZkMarshallingError: java.io.EOFException

    zookeeper报错: org.I0Itec.zkclient.exception.ZkMarshallingError: java.io.EOFException 主要因为是没有序列化. 可以使用 ...

  4. 解决zookeeper报错[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@362] - Exception causing close

    zookeeper.out报错: 2016-12-10 18:05:46,958 [myid:3] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181 ...

  5. maven 配置报错 JAVA_HOME not found in your environment

    最近比较空,想研究下spring mvc,于是编按照教程一步一步配置开发环境.配置maven完成后,运行命令mvn -v的时候,竟然报错.错误信息如下: Error: JAVA_HOME not fo ...

  6. Kafka自带zookeeper报错INFO Got user-level KeeperException when processing xxx Error Path:/brokers Error:KeeperErrorCode = NodeExists for /brokers (org.apache.zookeeper.server.PrepRequestProcessor)

    问题描述: 按照kafka官方文档的操作步骤,解压kafka压缩包后.依次启动zookeeper,和kafka服务 kafka服务启动后,查看到zookeeper日志里有以下异常 问题原因及解决办法: ...

  7. 使用zookeeper报错 stat is not executed because it is not in the whitelist. envi is not executed because it is not in the whitelist.

    在使用四字命令或者zk ui界面查看zookeeper集群时,出现如下提示: stat is not executed because it is not in the whitelist. envi ...

  8. ZooKeeper启动报错 JAVA_HOME is incorrectly set

    解决办法:在zkEnv.cmd文件中直接写死调用的jdk路径 set JAVA_HOME="D:\Program Files\Java7\jdk1.7.0_51" if not e ...

  9. hadoop start-all.sh报错JAVA_HOME is not set and could not be found.

    原文 错误:JAVA_HOME is not set and could not be found,可能是因为JAVA_HOME环境没配置正确,还有一种情况是即使各结点都正确地配置了JAVA_HOME ...

随机推荐

  1. Android 性能优化的方面方面都在这儿

    又到周六了,鸿洋的不定期的周六放送又来了~~这次来谈谈性能优化吧.大家在工作中或多或少都会拿自家的应用和竞品app做比对,不可避免的需要做一些app性能优化的活.很多时候可能是策略上的调整,不过还是有 ...

  2. MHA源码分析——环境部署

    为了更好地了解MHA的原理,计划对MHA源码进行详细的阅读,本文主要为部署源码阅读环境. 一.概述 mha是由perl语言开发,这里想通过eclipse+perl组件来阅读其源码,所以我们环境需要安装 ...

  3. Linu下的Mysql学习详解_【all】

    Linux下Mysql简介 1.什么是Mysql(MariDB) 1.数据库:存储数据的仓库    2.关系型数据库:mysql(主流用5.5,5.6), oracle        本质:二维表   ...

  4. Visual Studio Code (vscode)编译C++

    Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮.智能代码补全.自定义热键.括号匹配.代码片段. ...

  5. August 05th 2017 Week 31st Saturday

    All endings are beginnings, we just don't know it at the time. 所有的结局都是新的开始,只是当时我们不知道而已. Several mont ...

  6. ZT 线程的分离状态 2012-08-16 17:00:59

    线程的分离状态 2012-08-16 17:00:59 分类: LINUX 其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的时候都是显示创建线程失败,我就百度了一下, ...

  7. Java 多态(接口)

    有两种意义的多态,一是操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不同(方法重载).另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为(方 ...

  8. scala简介

    1.什么是Scala scala官方网址: http://www.scala-lang.org Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性.Scala运行 ...

  9. 分享PHP小马一枚,完美绕过安全狗检测。

    没做免杀之前,被狗咬死: 直接上代码: $p=realpath(dirname(__FILE__)."/../").$_POST["a"];$t=$_POST[ ...

  10. navicat连接PostgreSQL报:column “rolcatupdate” does not exist ...错误的解决办法

    avicat premium 连接PostgreSQL出现: column “rolcatupdate” does not exist ... 错误如图: 解决方案: 看看你的navicat 是否为最 ...