zookeeper+dubbo搭建分布式,如何解决zookeeper启动时闪退问题

如何解决zookeeper闪退问题

环境:
系统:win10
zookeeper版本:zookeeper-3.4.12

最近在用zookeeper+dubbo搭建分布式,当框架搭完以后,启动zookeeper出现闪退现象,经过百度发现,首先要让窗口即使报错也能显示、不闪退,才能查看报错信息。

在zookeeper的bin目录下找到zkServer.cmd,在其末尾加上末尾加pause,让zookeeper即使报错了也能弹出黑框还能打出错误信息。
zkServer.cmd里加上pause双击zookeeper的bin目录下的zkServer.cmd运行,可以看到如下信息:
我们看到的第一行就是我们报错信息:Error: JAVA_HOME is not set.在这里插入图片描述 经过百度发现是因为 JAVA_HOME 变量没有设定,因为其实zookeeper在启动服务端的时候会基于java环境启动。

所以在启动的时候会检测 jdk 是否安装,在 zkservice启动的时候,会找%JAVA_HOME%\bin\java.jar 进行java基础环境的启动。所以,如果没有配置的话,就要配置:
如何配置:区分两种系统(自行百度吧)
Linux: vim /etc/profile 文件修改后,检查是否完成 java -version
window:变量添加后,检查是否完成 java -version
好的!按理说完成以上步骤之后,就是已经完成了%JAVA_HOME%的配置。

针对于window10系统,如果配置完成之后,使用 -version都可以发现正常进行了安装,但是启动的时候依旧报错 JAVA_HOME is not set 的错误的话,那我们就需要看看 zkService 如何运行的了。
首先加载的是 zkEvn.cmd 文件,再启动 zkService.cmd,那么也就是说在 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%..
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
)

set JAVA_HOME=%JAVA_HOME:"=%

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

REM strip off trailing \ from JAVA_HOME or java does not start
if "%JAVA_HOME:~-1%" EQU "\" set "JAVA_HOME=%JAVA_HOME:~0,-1%"
 
set JAVA="%JAVA_HOME%"\bin\java
if not exist "%JAVA_HOME%"\bin\java.exe (
  echo Error: JAVA_HOME is incorrectly set.
  goto :eof
)

输出为:Error: JAVA_HOME is incorrectly set. 这个就是校验,且是校验为false。
手动设置一下 JAVAHOME 和 JAVA 的值:
如下:(只需要复制JAVAHOME 和 JAVA的那两行就可以了)

REM make it work for developers
SET CLASSPATH=%~dp0..\build\classes;%~dp0..\build\lib\*;%CLASSPATH%
(**在这一行后面加**)

set JAVA=C:\Program Files\Java\jdk1.8.0_121\bin\java
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_121

路径的话,找到自己相对应的jdk的路径就可以了

加完并保存以后,窗口显示如下就表示启动成功了,2181就是zookeeper的端口。
最终启动效果图

参考博文1:https://blog.csdn.net/whm18322394724/article/details/82557156
参考博文2:https://www.cnblogs.com/china-baizhuangli/p/8920776.html
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文为博主实际开发中遇到的问题,经查阅上面两条博文,结合我所遇到的问题本身整理出来的,如有侵权,联系删除。

如有疑问欢迎留言,欢迎一起探讨!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值