kafka/bin/kafka-run-class.sh: line 342: exec: java: not found

这篇具有很好参考价值的文章主要介绍了kafka/bin/kafka-run-class.sh: line 342: exec: java: not found。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本来jps看了下,kafka和zookeeper都起来了,手痒,非要换宝塔的进程守护管理器,选目录为/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

网上搜了大量的资料,有的说

原因:java环境变量的问题,kafka默认引用的java路径:/user/bin/java,但是我们实际路径不是这个。看有的博主说改环境变量,或者设置软连接指向/user/bin/java这个路径。
解决方案:首先,不推荐修改环境变量,其次创建软连接的方式,确实能解决这个报错,但是亲测执行后会有其他报错,kafka启动的时候获取java版本时会报错。

我就去vim看了下这个sh文件的342行看看究竟,发现是个判断

# Which java to use
if [ -z "$JAVA_HOME" ]; then
  JAVA="java"
else
  JAVA="$JAVA_HOME/bin/java"
fi

莫非,又莫非……到底是走了哪个逻辑分支?

于是毒丸计划开始,JAVA="java"改成JAVA="java1",保存重新在进程管理器点启动,报错,去看日志: /home/kafka/bin/kafka-run-class.sh: line 342: exec: java1: not found

哇咔咔,你果然是没判断出 JAVA_HOME已经有值了,我本可以武断的结束这个闹剧

kafka/bin/kafka-run-class.sh: line 342: exec: java: not found,kafka,java,分布式但是一想,YYDSB啊,为啥设置了却找不到啊,认知啊,认知才是不同身份的人的最大的差别! 身份?!!!莫非是因为我SSH登录的?于是我又查到了这位仁兄的资料:

 

通过ssh登陆之后会发现找不到JAVA_HOME ,我的JAVA_HOME是定义在/etc/profile 里面的。

研究后发现远程登录和直接登录执行的文件是不一样的:

    /etc/profile: 当用户登录时,该文件被执行.
    /etc/bashrc: 当bash shell被打开时,该文件被执行.

ssh作为远程登录的方式进入,当然就无法触发/etc/profile的执行,所以会发生找不到JAVA_HOME的问题,所以需要将java的配置信息配置到bashrc的文件中去,配置步骤如下所示:

.bashrc是一个隐藏的文件,要打开并修改该文件需要:

(1) 命令 vim ~/.bashrc 进入到文件;

(2) 直接按 i 键可以对文件进行修改, Esc + :+ wq退出并保存修改之后的文件

(3) 命令 :source ~/.bashrc 更新 .bashrc

对该文件进行修改保存后,在执行相关的操作,就不会发生如上的问题啦。

好吧,我打开了贴进去

#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

再去进程守护管理器,点启动,欧了

这世界,就是有时候没地儿说理去!!文章来源地址https://www.toymoban.com/news/detail-519966.html

到了这里,关于kafka/bin/kafka-run-class.sh: line 342: exec: java: not found的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • dockerfile报错:“/bin/sh -c yum -y install“

    主要错误 ERROR: failed to solve: process “/bin/sh -c yum -y install vim” did not complete successfully: exit code: 1 主要是容器版本问题,推荐使用Centos7 比如我的dockerfile 文件

    2024年02月22日
    浏览(31)
  • 启动rabbitmq报错 rabbitmq-server: line 70: exec: erl: not found

    首先执行命令 是正常进去的,说明已经安装了erlang,而且也配置了环境变量 百度看到了说是在报错的 /usr/lib/rabbitmq/bin/rabbitmq-server文件里再加erlang的环境变量配置 加了再执行`systemctl stop rabbitmq-server`还是一样报错 然后发现执行下面命令能正常启动,只是退出界面后有自动关

    2024年02月14日
    浏览(25)
  • /bin/sh: mysql_config: command not found

    mac下pip install -r requirements.txt安装mysqlclient报错 主要报错信息: 我安装的是mysql8.0,在vscode终端输入mysql提示找不到 添加mysql路径后在编辑器终端进行测试,提示如下证明OK了 主要原因是没有设置环境变量导致无法识别路径

    2024年02月15日
    浏览(24)
  • Docker容器/bin/bash start.sh无法找到not found

    记一次Dockerfile构建的Docker镜像,启动容器时sh: not found的问题 Dockerfile构建的Docker镜像,启动容器时找不到start.sh,执行docker run 命令时报错:/bin/sh: 1: /data/server/start.sh: not found Dockerfile如下(脚本正确无内容错误) 造成这个问题的原因主要有以下几点: docker中的文件夹没有获得权

    2024年02月14日
    浏览(27)
  • docker run、exec和attach使用和区别

    结论 docker run: 创建和启动一个新的容器实例 , 操作对象是镜像 ,选项较多,如果你 要创建和启动一个容器,只能用run; docker exec: 在已运行的容器中,执行命令 ,操作对象是容器 ,如果你要进入已运行的容器,并且执行命令,用exec; (只是进入容器执行命令,退出后

    2024年02月05日
    浏览(34)
  • /system/bin/sh: ./xxx: can‘t execute: Permission denied

    adb shell在Android emulator下运行可执行文件时,报错: 以为是权限问题,执行 su 进入root权限,然后执行 chmod 777 文件名 修改权限。重新运行可执行文件,还是报同样的错。 最后发现是可执行文件存放的路径问题,有些路径放可执行文件是执行不了的,不知道是为什么。 最后把

    2024年02月16日
    浏览(38)
  • Cannot find tomcat-9.0.0.M21/bin/setclasspath.sh

    问题描述:将linux上的tomcat直接拷贝到以一个路径下,执行sh startup.sh 报错 解决:修改全局变量配置文件 1、vim /etc/profile   (主要修改如下图所标记的值 ) 2、source /etc/profile (设置环境变量立即生效)

    2024年02月12日
    浏览(26)
  • JAVA-IDEA报错Error:Cannot run program “C:\Program Files\Java\jdk1.8.0_20\bin\java.exe“

    一般发生在更新jdk版本之后,执行java程序报错:Error:Cannot run program “C:Program FilesJavajdk1.8.0_20binjava.exe” (in directory “C:UsersxxxAppDataLocalJetBrainsIntelliJIdea2020.1compile-server”): CreateProcess error=2, 系统找不到指定的文件。 解决: 第一步 1)查看“C:Program FilesJavajdk1.8.0_20b

    2024年02月17日
    浏览(40)
  • 在运行makefile文件的时候遇到 /bin/sh: 1: XXXXX: not found问题解决

    解决方案  1、命令行操作可以正常操作,在makefile操作出现 /bin/sh: 1: XXXXX: not found 问题; 2、先  which  XXXXX 找到命令绝对路径; 3、在makefile内 XXXXX 前加上绝对路径 以下是我遇到的问题及我结局时候的操作流程: 1、首先描述问题情况 在使用makefile操作的时候提示编译器找不

    2023年04月17日
    浏览(65)
  • Docker容器无法启动 Cannot find /usr/local/tomcat/bin/setclasspath.sh

    报错信息如下 解决办法 权限不够 加上 --privileged 获取最大权限

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包