本來jps看了下,kafka和zookeeper都起來了,手癢,非要換寶塔的進(jìn)程守護(hù)管理器,選目錄為/home/kafka,命令為/home/kafka/bin/zookeeper-server-start.sh ?/home/kafka/config/zookeeper.properties
就在日志里看到 kafka/bin/kafka-run-class.sh: line 342: exec: java: not found
網(wǎng)上搜了大量的資料,有的說
原因:java環(huán)境變量的問題,kafka默認(rèn)引用的java路徑:/user/bin/java,但是我們實際路徑不是這個??从械牟┲髡f改環(huán)境變量,或者設(shè)置軟連接指向/user/bin/java這個路徑。
解決方案:首先,不推薦修改環(huán)境變量,其次創(chuàng)建軟連接的方式,確實能解決這個報錯,但是親測執(zhí)行后會有其他報錯,kafka啟動的時候獲取java版本時會報錯。
我就去vim看了下這個sh文件的342行看看究竟,發(fā)現(xiàn)是個判斷
# Which java to use
if [ -z "$JAVA_HOME" ]; then
JAVA="java"
else
JAVA="$JAVA_HOME/bin/java"
fi
莫非,又莫非……到底是走了哪個邏輯分支?
于是毒丸計劃開始,JAVA="java"改成JAVA="java1",保存重新在進(jìn)程管理器點啟動,報錯,去看日志: /home/kafka/bin/kafka-run-class.sh: line 342: exec: java1: not found
哇咔咔,你果然是沒判斷出 JAVA_HOME已經(jīng)有值了,我本可以武斷的結(jié)束這個鬧劇
但是一想,YYDSB啊,為啥設(shè)置了卻找不到啊,認(rèn)知啊,認(rèn)知才是不同身份的人的最大的差別! 身份??。?!莫非是因為我SSH登錄的?于是我又查到了這位仁兄的資料:
?
通過ssh登陸之后會發(fā)現(xiàn)找不到JAVA_HOME ,我的JAVA_HOME是定義在/etc/profile 里面的。
研究后發(fā)現(xiàn)遠(yuǎn)程登錄和直接登錄執(zhí)行的文件是不一樣的:
??? /etc/profile: 當(dāng)用戶登錄時,該文件被執(zhí)行.
??? /etc/bashrc: 當(dāng)bash shell被打開時,該文件被執(zhí)行.ssh作為遠(yuǎn)程登錄的方式進(jìn)入,當(dāng)然就無法觸發(fā)/etc/profile的執(zhí)行,所以會發(fā)生找不到JAVA_HOME的問題,所以需要將java的配置信息配置到bashrc的文件中去,配置步驟如下所示:
.bashrc是一個隱藏的文件,要打開并修改該文件需要:
(1) 命令 vim ~/.bashrc 進(jìn)入到文件;
(2) 直接按 i 鍵可以對文件進(jìn)行修改, Esc + :+ wq退出并保存修改之后的文件
(3) 命令 :source ~/.bashrc 更新 .bashrc
對該文件進(jìn)行修改保存后,在執(zhí)行相關(guān)的操作,就不會發(fā)生如上的問題啦。
好吧,我打開了貼進(jìn)去
#java environment
JAVA_HOME=/home/jdk1.8.0_351
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/rt.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
不成啊,還是老毛病,還是下硬手吧,把if給滅了,多余
# Which java to use
if [ -z "$JAVA_HOME" ]; then
JAVA="/home/jdk1.8.0_351/bin/java"
else
JAVA="$JAVA_HOME/bin/java"
fi
再去進(jìn)程守護(hù)管理器,點啟動,歐了文章來源:http://www.zghlxwxcb.cn/news/detail-519966.html
這世界,就是有時候沒地兒說理去!!文章來源地址http://www.zghlxwxcb.cn/news/detail-519966.html
到了這里,關(guān)于kafka/bin/kafka-run-class.sh: line 342: exec: java: not found的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!