zookeeper报错 JAVA_HOME is not set

2023-11-04

zookeeper报错 JAVA_HOME is not set

很多开发者安装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的环境下,没遇到过。大家可以手动试试,并读懂执行代码,就可以自己修改和编写了。
感谢看官,如果有疑问大家一起讨论,关注或者留言。
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Java --- 堆空间大小设置与OutOfMemoryError(OOM)

    目录 一 堆空间大小设置 二 OutOfMemoryError异常 一 堆空间大小设置 1 Java堆区用于存储Java对象实例 那么堆的大小在JVM启动时就已经设定好了 大家可以通过选项 Xmx 和 Xms 来进行设置 Xms 用于表示堆
  • gorm的全部标签说明

    在 GORM 中 可以使用多种标签来控制模型结构体的行为和数据库列的属性 以下是一些常用的 GORM 标签 primaryKey 将字段设置为模型的主键 autoIncrement 将字段设置为自增长字段 unique 将字段设置为唯一的
  • Filter链,FilterConfig接口,Filter实现用户自动登录

    一 Filter链 在一个 Web 应用程序中可以注册多个 Filter 程序 每个 Filter 程序都可以针对某一个 URL 进行拦截 如果多个 Filter 程序都对同一个 URL 进行拦截 那么这些 Filter 就会组成一个 Fi
  • mongodb replica初始化

    use admin cfg id audit members id 0 host 10 96 91 192 17017 priority 2 id 1 host 10 96 91 192 27017 priority 1 id 2 host
  • VSCode中JS脚本的运行(控制台输出配置)

    F5开始调试 进入launch json中进行如下配置 使用 IntelliSense 了解相关属性 悬停以查看现有属性的描述 欲了解更多信息 请访问 https go microsoft com fwlink linkid 830387
  • node版本降级

    问题原因 因为node版本过高 导致npm install 或npm run dev报错 1 安装node版本管理模块 n sudo npm install n g 2 根据自己需要的安装版本 例如 安装稳定版本 sudo n stable
  • 设计模式之抽象工厂

    抽象工厂模式结构图 抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口 而无需指定它们具体的类 工厂方法模式 定义一个用于创建对象的接口 让子类决定实例化哪一个类 抽象工厂模式是围绕一个超级工厂创建其他工厂 该超级工程又称为其他工厂的
  • 【Spring容器的启动流程】

    Spring容器的启动流程主要分为以下几个步骤 加载配置文件 Spring容器会从指定的配置文件中读取配置信息 包括bean的定义 依赖关系 AOP切面等 创建容器 Spring容器启动后会创建一个容器实例 容器负责管理bean的生命周期和
  • 使用Numpy随机生成一个4维矩阵,计算最后两维的和

    深度学习作业 1 使用Numpy随机生成一个4维矩阵 计算最后两维的和 import numpy def chapter2 6 ax1 ax2 ax3 ax4 arr numpy random randint 2 size ax1 ax2
  • 云原生之使用Docker部署Laverna笔记工具

    云原生之使用Docker部署Laverna笔记工具 一 Laverna介绍 1 Laverna简介 2 Laverna特点 二 检查本地环境状态 1 检查系统版本 2 检查docker状态 三 下载Laverna镜像 四 部署Laverna
  • 【MQTT】MQTT服务器mosquitto和客户端paho的使用

    MQTT服务器mosquitto和客户端paho mosquitto安装使用 1 mosquitto下载 从官网下载最新版本 https mosquitto org download 以下是mosquitto2 0 14windowsX64
  • Vue入门案例--TodoList备忘录

    文章目录 前言 1 创建Vue项目 2 搭建项目 2 1 MyHeader编写 2 2 MyList编写 2 3 MyItem编写 2 4 MyFooter编写 2 5 App编写 3 初始化列表 3 1 App定义数据 3 2 MyLis
  • 排序动态图

    1 冒泡排序 2 选择排序 3 鸡尾酒排序 4 插入排序 5 归并排序 6 堆排序 7 希尔排序 8 快速排序 上面的图片如果打不开 在新标签页面就可以
  • python3.7 安装Airflow中HiveToMySqlTransfer报错解决

    报错内容如下 File app python lib python3 7 site packages airflow hooks hive hooks py line 783 in get conn from pyhive hive imp
  • 百度地图BMap

    做了半天 搜到一个很好的demo 能解决多点的问题 http blog csdn net a497785609 article details 24009031 div style width 100 height 500px border
  • [大话设计模式C++版] 第9章 简历复印 —— 原型模式

    源码可以在这里找到 大话设计模式C 版 简历代码初步实现 写一个简历类 必须要有姓名 可以设置性别和年龄 可以设置工作经历 客户端实例化三份简历 main cpp include
  • docker运行报错:docker: Error response from daemon: No command specified.

    mysql镜像运行报错 docker Error response from daemon No command specified 如图 解决方案 是由于命令没启用的缘故 所以需要在运行命令后面追加 bin bash 如下图 问题解决 希
  • IDEA中找不到符号问题解决

    把以上三处的jdk从8改成11 再也不想看到这个问题了
  • 开启WSL之旅

    专业点的计算机使用者 会经常跟Linux与windows系统打交道 经常是一台计算机装双系统或者在一个系统中安装虚拟机 双系统来回切换 挺麻烦 遇到同时需要两个环境时 就没办法了 虚拟机 对于配置高的机器还可以 不过性能体验也不太好 总之是
  • “烧钱”的大模型:初探成本拆解与推理优化方法

    编者按 大模型的成本问题一直以来是大家重点关注的问题 本文重点讨论了训练大型语言模型 LLMs 需要的成本 并简要介绍什么是LLM以及一些用于优化大模型推理表现的技术 虽然很难准确预测LLMs未来会怎么发展 但可以肯定 如果成本问题得到解决

随机推荐

  • 服务器系统文件共享如何设置,服务器操作系统文件共享设置

    服务器操作系统文件共享设置 内容精选 换一换 切换操作系统是为您的云服务器重新切换一个系统盘 切换完成后云服务器的系统盘ID会发生改变 并删除原有系统盘 如果云服务器当前使用的操作系统不能满足业务需求 如软件要求的操作系统版本较高 您可以选
  • 思科设备命令讲解(超基础)

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 目录 一 静态路由配置命令 二 默认路由配置命令
  • 2023年前端面试题总结

    某多多 1 Promise实现原理 2 vue组件间通信 3 性能优化 4 vuex数据流动过程 5 谈谈css预处理器机制 6 算法 Promise串行 某眼电影 1 vue组件间通信 2 react和vue更新机制的区别 3 Vue3
  • 超硬货,大型 Rust 项目经验分享

    本篇文章中 我将分享我组织大型 Rust 项目的经验 但这绝不是权威的 只是我通过尝试和错误中发现的一些小技巧 Cargo 作为 Rust 的构建系统 遵循约定大于配置的原则 它不仅为小型项目提供了一套良好的默认配置集 尤其为公共 crat
  • Flash学习笔记

    快捷键 1 F8 可以将散件转化为元件 2 Ctrl 2 满画布显示 3 F6 插入关键帧 4 Ctrl Enter 预览 一 第一章 1 颜料桶 更改填充色 墨水瓶 改变边框色 2 动画的分类 位移动画 形变动画 逐帧动画 路径动画 蒙版
  • Windows server 2012_R2 无法安装VMware Tools解决方法(详细)

    百度网盘 链接 https pan baidu com s 1QbIHSv1Df8eVAIH2ym1g8Q pwd rdi4 提取码 rdi4 官网下载链接 KB2919442https www microsoft com zh cn do
  • Table固定表头固定左侧列

    效果图 思路 把需要固定的内容进行拆封 比如左侧的表头和内容 右侧的表头和内容 都单独的存放在一个table中 在滚动条滚动的时候通过jquery scroll 区分横向纵向滚动条的方法来实现左侧内容的滚动和右侧表头的滚动 第一步 div
  • 直接线性变换解法(DLT)用于标定相机

    直接线性变换法是建立像点坐标和相应物点物方空间坐标之间直接的线性关系的算法 特点 不需要内外方位元素 适合于非量测相机 满足中 低精度的测量任务 可以标定单个相机 1 各坐标系之间的关系推导直接线性变换解法 1 1 像素坐标系与像平面坐标系
  • MATLAB中用Application Complier生成可执行文件的步骤及相关注意事项

    生成可独立执行的软件 可以分成以下5个主要的步骤 1 打开Application Complier 2 添加主程序文件 3 可执行文件设置 4 选择打包方式 5 相关文件解释 大体步骤多类似 里面有些容易出错的小细节 相关设置需要注意的有
  • node中使用express+mongodb实现分页查询

    文章目录 引言 一 分页案例 二 查询方法扩展介绍 1 find 2 limit 3 skip 4 populate 总结 引言 在Web应用程序开发中 分页查询是必不可少的功能之一 Node js提供了许多优秀的工具和框架来实现分页查询
  • 马虎的算式

    import java util public class Main public static void main String args int ans 0 for int a 1 a lt 10 a for int b 1 b lt
  • Struts2输入校验(XML方式)

    本章主要介绍struts2的XML配置方式输入校验 以下将结合一个实例程序进行说明 代码结构 关键代码 RegistAction javapackage com alfred regist action import java util D
  • libuv 高并发异步使用

    问题来源 在开发libuv客户端 服务器时 需要并发的向客户端发送数据 libuv就会用到 uv write函数 因此 我的初步方案是 1 创建线程池 2 线程池分配数据内存buf 并打包 3 将包发给 uv write 4 uv writ
  • 为什么越来越多的企业选择云数据存储而放弃本地数据存储?

    随着企业的发展 它们会产生大量数据 企业已经意识到 利用他们的数据做出数据驱动的决策对于创新和保持竞争优势至关重要 本文将会探讨企业在收集和分析大数据时可能面临的主要挑战 以及将企业数据仓库部署到本地或云数据存储的选择 我们将根据安全性 成
  • 金融行业软件测试

    金融行业软件测试 一 什么是金融行业 二 金融行业的业务特点 1 金融行业的业务特点 三 金融行业测试主要测试范围 1 功能测试 2 业务验证测试 3 客户端测试 4 接口测试 5 性能测试 6 安全性测试 四 金融行业软件测试的现状 五
  • Qt-Web混合开发-QWebEngineView加载网页最小示例(1)

    Qt Web混合开发 QWebEngineView加载网页最小示例 文章目录 Qt Web混合开发 QWebEngineView加载网页最小示例 1 概述 2 实现效果 3 实现功能 4 关键代码 5 源代码 更多精彩内容 个人内容分类汇总
  • docker原理及服务编排

    一 什么是docker Docker 是一个开源项目 诞生于2013年初 最初是dotCloud公司内部的一个业余项目 它基于Google公司推出的Go语言实现 项目后来加入了Linux基金会 遵从了Apache 2 0协议 项目代码在Gi
  • C++之 引用(refer)

    含义 变量的别名 第二名称 作用 使用别名访问原名的内存空间 即别名与原名保存同样的内存空间 语法 数据类型 别名 原名 int b a 注意事项 引用必须要初始化 对于一个变量a 不能直接写int b 而需要写int b a 引用在初始化
  • 水箱计算机控制系统设计,三容水箱计算机控制实验系统设计与控制算法研究

    摘要 三容水箱是一种典型控制对象 许多现场控制类型可以抽象成三容水箱数学模型 可作为自动化控制领域研究对象 三容水箱是一种柔性结构系统 通过水箱管路的组合形成各阶控制对象类型并且对各种控制算法进行设计 仿真和验证 目前三容水箱存在实验类型单
  • zookeeper报错 JAVA_HOME is not set

    zookeeper报错 JAVA HOME is not set 很多开发者安装zookeeper的时候 应该会发现到这么一个问题 JAVA HOME is not set 好的 那么这个是什么意思呢 就是说你的 JAVA HOME 变量没