• Mac无法启动RocketMQ,日志显示,runserver.sh: line 91: /Library/Internet: No such file or directory


    前言

    从日志的报错信息可以看出, /Library/Internet 大概率是因为系统安装的jdk路径包含空格导致脚本启动失败

    为什么能看出来是 jdk 路径的问题, 那是因为遇到这种问题多了, 基本上也知道哪里会问题
    特别是因为中间升级了 mac 的系统, 那各种问题都有, 都想回退系统版本了

    解决办法

    一. 改系统配置文件

    1. 系统配置: /etc/profile

    • 能改, 但对于高版本的 mac 系统, 改了也生效不了, 除非一些特别的操作, 个人觉得风险太大, 没有继续尝试

    2. 用户配置: ~/.bash_profile

    • 使用 vim 命令打开 ~/.bash_profile, 在文件最后, 添加如下内容
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
    export PATH=$PATH:$JAVA_HOME/bin
    
    • 让改动生效(命令): source ~/.bash_profile

    查询自己mac安装的各类jdk路径
    /usr/libexec/java_home -V

    -bash-3.2$ /usr/libexec/java_home  -V
    Matching Java Virtual Machines (5):
        13.0.2 (x86_64) "Oracle Corporation" - "Java SE 13.0.2" /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
        11.0.7 (x86_64) "Oracle Corporation" - "Java SE 11.0.7" /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home
        1.8.301.09 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
        1.8.0_301 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
        1.8.0_221 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
    /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    


    二. 改启动脚本

    1. 指定脚本的jdk路径

    • 从报错提示, 确实需要修改的启动脚本: runserver.sh

    • 使用命令 /usr/libexec/java_home -V 查询当前 mac 已安装的 jdk 路径
    -bash-3.2$ /usr/libexec/java_home -V
    Matching Java Virtual Machines (5):
        13.0.2 (x86_64) "Oracle Corporation" - "Java SE 13.0.2" /Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
        11.0.7 (x86_64) "Oracle Corporation" - "Java SE 11.0.7" /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home
        1.8.301.09 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
        1.8.0_301 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
        1.8.0_221 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
    /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    

    我选择的版本是1.8
    路径是: /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home

    • 使用命令 vim {$path}/runserver.sh ({$path} 表示脚本所在的目录/路径 )

    • 参考下面代码, 将 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home 添加到启动脚本里
    #===========================================================================================
    # Java Environment Setting
    #===========================================================================================
    error_exit ()
    {
        echo "ERROR: $1 !!"
        exit 1
    }
    
    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
    [ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
    
    # force set java_home
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
    # force set java_home
    
    export JAVA="$JAVA_HOME/bin/java"
    export BASE_DIR=$(dirname $0)/..
    export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
    
    • 保存并退出 :wq , 重启 RocketMQ 即可




    参考来源

    naco mac 启动报错 /Library/Internet: No such file or directory

    在Mac中如何正确地设置JAVA_HOME

  • 相关阅读:
    【转发】JS中如何判断null/ undefined/IsNull
    CSS3实现两行或三行文字,然后多出的部分省略号代替
    关于CodeFirst的使用教程
    把一个字符串里符合表情文字标签的地方全部替换为相应的图片的方法
    js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素
    用css3选择器给你要的第几个元素添加不同样式方法【转发】
    WebApi2 知识点总结
    把字符串每隔四个字符使用“-”中横线分隔的方法
    C语言strchr()函数:查找某字符在字符串中首次出现的位置
    linux 下安装开发组件包
  • 原文地址:https://www.cnblogs.com/vitoboy/p/15268973.html
Copyright © 2020-2023  润新知