kafka踩坑——java找不到kafka-run-class.sh: line 309: exec: java: not found
2023-09-11 14:20:02 时间
今天执行
user_1@test_1:/opt/kafka$ sudo bin/zookeeper-server-start.sh config/zookeeper.properties
/opt/kafka/bin/kafka-run-class.sh: line 309: exec: java: not found
但却出现报错kafka-run-class.sh: line 309: exec: java: not found,
根据网上查询,说可能是jdk问题,之后我又在/etc/profile下检查jdk
# java
JAVA_HOME=/usr/local/java/jdk-11.0.6
JRE_HOME=$JAVA_HOME
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH JRE_HOME
# java 8
#JAVA_HOME=/usr/local/java/jdk1.8.0_231
#JRE_HOME=/usr/local/java/jdk1.8.0_231/jre
#CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
#PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
#export JAVA_HOME JRE_HOME CLASS_PATH PATH
发现也没有什么错误呀,再一想我使用的是普通用户登录进来在root用户下的目录下(/opt/kafka)进行操作,虽然给该文件夹了755权限并且还带了sudo执行,但是否是还可能是因为用户权限问题呢?之后我把用户切换成了root用户,再一执行,发现开启成功。
随后我想,之前我只赋予了/opt/kafka755权限,就试试把这个/opt/kafka增加chmod 777 权限后再用普通用户登录,看是否有效。
实验了一下
发现还是不行,可能是因为调用需要用到jdk可能还要再给jdk增加权限。
得了,那我就把kafka放到普通用户的文件夹下使用就行了。
再来实验一下
启动成功!
再进行深入分析后发现是Kafka的默认/usr/bin/java
路径与我们实际的$JAVA_HOME/bin/java
路径不一致导致的。
这里我们有两种修改方式:
- 修改我们的实际路径(
$JAVA_HOME
) - 设置一个软连接就可以了
参考文章:Kafka启动报错处理:/opt/module/kafka/bin/kafka-run-class.sh: 第 258 行:exec: java: 未找到
相关文章
- [Java基础] java的守护线程与非守护线程
- java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-one
- java实现动态验证码源代码——jsp页面
- [Java 泥水匠] Java Components 之一:Java String (肯定有你不懂的)
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- Java实现 LeetCode 421 数组中两个数的最大异或值
- Java实现最大流量问题
- java实现 蓝桥杯 算法提高 Problem S4: Interesting Numbers 加强版
- Java实现台阶问题
- Java实现 蓝桥杯VIP 算法提高 计算器
- Java实现 蓝桥杯VIP 算法训练 连续正整数的和
- Java实现蓝桥杯历届试题兰顿蚂蚁
- Java通过mysql-connector-java-8.0.11连接MySQL Server 8.0遇到的几个问题
- 零基础学java-2,开发环境搭建
- 【JAVA】java中char类型数组用数组名打印结果不是地址值而是数组内容
- 【JAVA】 04-Java中的多线程
- Kafka JAVA客户端代码示例--高级应用
- kafka-eagle报错解决:Kafka version is “-“ or JMX Port is “-1“ maybe kafka broker jmxport disable.
- 【项目实战】使用Java Keytool工具生成的CSR给第三方云平台签名
- 【java】Java经典面试题整理(附答案)
- 【Java】java中javaSE与javaEE的区别
- Android 12.0 ResolverActivity.java多个app选择界面去掉始终保留仅有一次
- 详解jvm之java类加载机制和类加载器(ClassLoader) 深入理解Java类加载器(ClassLoader) 如何自定义类加载器 深入说明双亲委派 双亲委派模型的破坏者-线程上下文类加载器
- java中的transient 详细总结Java中transient关键字 对象写出流ObjectOutputStream 对象写入流ObjectInputStream
- Java Logger(java日志)
- mysql-connector-java与Mysql、Java的对应版本
- java中文件操作
- 【java】Java线程池实现原理及业务中的实践
- 解开Kafka神秘的面纱(四):kafka stream及interceptor