Error: JAVA_HOME is not set and Java could not be found

ava 已提前安装在 /opt/module/jdk1.8.0_241/ 目录下(这是 JDK 8 的完整安装路径,完全适配 Cloudera Manager 5.16.2),现在只需基于该路径配置 JAVA_HOME 即可解决启动错误,以下是针对性的完整操作步骤:

一、明确核心信息

你的 JDK 根目录(即 JAVA_HOME 应指向的路径)是:/opt/module/jdk1.8.0_241(注意:不是 bin/java,而是包含 bin 目录的上层根目录)。

二、配置 JAVA_HOME 环境变量(两种方式任选,推荐全局配置)

方式 1:全局配置(对所有用户生效,永久有效,优先推荐)
  1. 编辑系统全局环境变量配置文件: bash

    运行

    复制代码
    vi /etc/profile
  2. 在文件末尾添加以下内容(直接复制,无需修改路径,已匹配你的 JDK 目录): bash

    运行

    复制代码
    # 配置 JAVA_HOME(指向你的 JDK 根目录)
    export JAVA_HOME=/opt/module/jdk1.8.0_241
    # 配置 JRE_HOME(依赖 JAVA_HOME,无需手动修改)
    export JRE_HOME=$JAVA_HOME/jre
    # 将 Java 二进制目录添加到系统 PATH,确保系统能找到 java 命令
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  3. 保存退出(vi 编辑器中按 Esc,输入 :wq 回车);

  4. 让配置立即生效(关键步骤,否则配置不生效): bash

    运行

    复制代码
    source /etc/profile
方式 2:局部配置(仅对 Cloudera SCM Server 生效,不影响系统全局)

若不想修改系统全局环境,可直接在 Cloudera 服务启动脚本中指定 JAVA_HOME:

  1. 编辑 Cloudera SCM Server 启动脚本: bash

    运行

    复制代码
    vi /etc/init.d/cloudera-scm-server
  2. 在脚本第一行 #!/bin/bash 下方添加以下配置(直接复制):

    bash

    运行

    复制代码
    # 仅为 Cloudera SCM Server 指定 JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_241
  3. 保存退出(Esc → :wq 回车)。

三、验证 JAVA_HOME 配置是否生效

执行以下命令,确认配置无误:

bash

运行

复制代码
# 1. 查看 JAVA_HOME 变量值,应输出你的 JDK 根目录
echo $JAVA_HOME
# 正常输出:/opt/module/jdk1.8.0_241

# 2. 验证 Java 版本,确认命令可正常执行
java -version
# 应输出 JDK 1.8.0_241 相关版本信息,无报错即正常

# 3. 验证 javac 命令(确认 JDK 完整可用,非仅 JRE)
javac -version
# 正常输出:javac 1.8.0_241

四、修复 JDK 目录权限(可选,避免启动权限问题)

你的 JDK 目录所有者是 10143:10143(非 root 用户),可能导致 Cloudera SCM Server(以 root 或 cloudera-scm 用户运行)无权限读取,建议修复权限:

bash

运行

复制代码
# 递归修改 JDK 目录所有者为 root(系统默认管理员)
chown root:root /opt/module/jdk1.8.0_241 -R

# 递归修改目录权限,确保可读可执行
chmod 755 /opt/module/jdk1.8.0_241 -R
# 递归修改文件权限,确保可读
chmod 644 /opt/module/jdk1.8.0_241/* -R

五、重新启动 Cloudera SCM Server 并验证

bash

运行

复制代码
# 1. 先停止可能异常运行的服务
systemctl stop cloudera-scm-server

# 2. 启动 Cloudera SCM Server 服务
systemctl start cloudera-scm-server

# 3. 查看服务运行状态,确认是否启动成功
systemctl status cloudera-scm-server

# 4. 查看日志,确认无 Java 相关错误
tail -n 100 /var/log/cloudera-scm-server/cloudera-scm-server.log
tail -n 100 /root/cloudera-scm-server/cloudera-scm-server.out

总结

  1. 核心路径:你的 JAVA_HOME 应配置为 /opt/module/jdk1.8.0_241(非 bin/java 路径);
  2. 关键操作:配置环境变量后必须执行 source /etc/profile(全局配置),或修改启动脚本(局部配置);
  3. 额外保障:修复 JDK 目录权限,避免因权限不足导致服务启动失败;
  4. 验证标准:echo $JAVA_HOME 输出正确路径、java -version 正常输出版本、Cloudera 服务启动无 Java 相关报错。
相关推荐
2301_32241428042 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
懂点Tech4 小时前
ctfshow MISC入门图片篇(信息附加):misc41解题思路
开发语言·python
金銀銅鐵5 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
catchadmin5 小时前
PHP 8.7 协程新提案 让跨协程代码共享请求身份
开发语言·php
福建佰胜张工5 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
念何架构之路5 小时前
go-grpc设计思想
开发语言·后端·golang
catoop5 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x6 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
酷炫码神6 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
驭渊的小故事6 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring