1. 复现问题
今天在安装Erlang
和RabbitMq
完成后,在cmd
窗口中输入如下命令:
rabbitmq-plugins enable rabbitmq_management
却报出了如下错误:
D:\Software\RabbitMQ Server\rabbitmq_server-3.10.7\sbin>rabbitmq-plugins enable rabbitmq_management
=ERROR REPORT==== 31-Aug-2022::17:09:36 ===
beam/beam_load.c(1862): Error loading module rabbitmqctl_escript:
This BEAM file was compiled for a later version of the run-time system than 20.
To fix this, please recompile this module with an 20 compiler.
(Use of opcode 169; this emulator supports only up to 159.)
escript: exception error: undefined function rabbitmqctl_escript:main/1
in function escript:run/2 (escript.erl, line 759)
in call from escript:start/1 (escript.erl, line 277)
in call from init:start_em/1 (init.erl, line 1085)
in call from init:do_boot/3 (init.erl, line 793)
即escript: exception error: undefined function rabbitmqctl_escript:main/1
,翻译成中文是escript: 异常错误: 未定义的函数 rabbitmqctl_escript:main/1
。
2. 分析问题
经过查询网上的资料得知,导致此问题的情况可能有多种,此处导致此情况的是erlang/otp
版本与rabbitmq
不匹配导致。
分别查看我安装的Erlang
和RabbitMq
的版本,如下所示:
- 查看
Erlang
版本
在cmd
中输入erl -version
,如下图所示:
我安装的Erlang
版本是9.2
- 查看
RabbitMq
版本
进入RabbitMq
的安装目录,查看其文件夹,如下图所示:
我安装的RabbitMq
版本是3.10.7
rabbitmq
官网上有关与erlang
版本的对应关系说明:compatibility-matrix,根据我安装的RabbitMq
版本找到对应的Erlang
版本,如如下图所示:
可见,需要的Erlang
最低版本版本是24.2,最高版本是25.0
,因而,erlang/otp
版本与rabbitmq
不匹配。
3. 解决问题
要么重新下载erlang/otp
版本,要么重新下载与rabbitmq
。
我选择重新下载和安装rabbitmq
,即RabbitMQ 3.8.15
,如下图所示:
对应的Erlang/opt
版本在22.3 ~ 23.x
之间,我选择的是和erlang/opt 23.1
,如下图所示:
如下是重新安装完成的截图:
erlang/opt 23.1
RabbitMQ 3.8.15
4.如何安装Erlang和RabbitMq
如何安装erlang/otp
和rabbitmq
,可以参考我的这篇文档:一文详解Windows安装RabbitMQ教程