RocketMQ安装过程问题记录

安装环境为MacOS 12.7.5

  1. 在启动NameServer时报错,RROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!

    解决方法:配置JAVA_HOME,需要配置1.8的JDK,高于这个版本将报另一个错误macos rocketmq Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.

  2. 在启动Broker时报错

    1
    2
    3
    Error: VM option 'UseG1GC' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.
    Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.

    解决方法:这个错误表示在启动 RocketMQ 的时候,JVM 尝试使用 UseG1GC 这个垃圾收集器选项,但它被标记为实验性的,因此需要显式地解锁实验性选项才能使用。

    可以通过以下步骤来解决这个问题:

    1. 找到 RocketMQ 的启动脚本,这通常在 bin 目录下,例如 runbroker.sh(Linux/macOS)或者 runbroker.cmd(Windows)。

    2. 编辑这个启动脚本,找到 JVM 参数的部分。你可能会看到类似 JAVA_OPT 的变量,用来配置 JVM 启动参数。

    3. JAVA_OPT 变量中添加 -XX:+UnlockExperimentalVMOptions,比如:

      1
      JAVA_OPT="${JAVA_OPT} -XX:+UnlockExperimentalVMOptions"
    4. 保存并关闭文件,然后重新启动 RocketMQ。

    如果不确定如何修改,下面是一个示例,如果在 runbroker.sh 中看到以下内容:

    1
    JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:+UseG1GC"

    可以修改为:

    1
    JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC"

    这样,启动时就不会再报这个错误了。

  3. 启动消费者或生成者时报错

    其中有一条报错信息为

    1
    Caused by: io.netty.handler.codec.EncoderException: java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;

    __问题原因:__这个报错的原因是因为,在我一开始安装RocketMQ时,使用的方式是自行用mvn对源码进行编译的方式,因为当时编译时使用的JDK版本为17,但是后面运行时使用为JDK1.8,倒是ByteBuffer.flip()的实现方式不同造成了这个错误。

    __解决方法:__在编译RocketMQ时使用JDK1.8


RocketMQ安装过程问题记录
https://archiewang.site/2024/08/30/博客-2024-08-30-23-26-00/
作者
Archie Wang
发布于
2024年8月30日
更新于
2024年12月30日
许可协议