32

我问/回答这个问题是因为它把我挂断了,很可能其他人也会遇到同样的问题。

在 Windows Server 2008 x64 上安装 RabbitMQ x64 v2.8.6。

Erlang 使用默认安装位置安装到 C:\Program Files\erl5.9.2 后,我试图通过运行 rabbitmq-service.bat 来启动服务器。失败:

Please either set ERLANG_HOME to point to your Erlang installation 
or place the RabbitMQ server distribution in the Erlang lib folder.

问题是 .bat 文件没有正确的子路径。带有 5.9.2 (R15B02) 版本的 erlang。我的 ERLANG_HOME 目录设置正确,但脚本没有正确使用这个版本的 Erlang,在这个 Erlang 菜鸟看来,有一个名为“erts-5.9.2”的新子目录导致了问题。也许熟悉这些脚本的人可以描述如何在没有我将要描述的黑客解决方法的情况下使其正常工作?

4

15 回答 15

21

Windows 上有几个 RabbitMQ 控制 .bat 文件。您使用的每一个都需要更改以正确反映 Erlang 路径。在此示例中,我正在编辑 rabbitmq-server.bat,因为它是更简单的文件之一……您要运行的任何 .bat 文件都需要使用 rabbitmq_service.bat 文件才能使它们工作是最需要调整的。

编辑那个 rabbitmq_server.bat 文件,你可以在第 48 行左右看到,检查是否找到了 erl.exe,但路径不正确:

if not exist "!ERLANG_HOME!\bin\erl.exe" (

该路径与 Erlang 5.9.2 版本的文件结构不匹配。我通过简单地从第 48 行到第 58 行删除此路径检查来解决此问题,然后,.bat 实际上在第 129 行调用 erl.exe,内容如下:

"!ERLANG_HOME!\bin\erl.exe" 

我只是硬编码了我的 erl.exe 的路径:

"C:\Program Files\erl5.9.2\erts-5.9.2\bin\erl.exe" 

路径正确后,rabbitmq .bat 文件将运行。

于 2012-09-07T18:39:34.370 回答
19

1-设置环境变量:

变量名:ERLANG_HOME
变量值:C:\Program Files (x86)\erl6.4

注意:不要在上述步骤中包含 bin。

2-添加%ERLANG_HOME%\binPATH环境变量:

变量名:PATH
变量值:%ERLANG_HOME%\bin

这很好用。

于 2016-09-20T06:48:42.007 回答
9

我有类似的问题,在 .bat 文件中修改 ERLANG_HOME 不起作用。然后我在命令提示符下尝试echo %ERLANG_HOME%,没有打印环境变量值(我可以看到 ERLANG_HOME 环境变量已在高级系统设置下创建),这让我相信我需要重新启动服务器 64 位二郎的安装。重新启动服务器后,它就像一个魅力。我希望这可以帮助别人。

于 2016-07-07T15:41:37.660 回答
5

只是为了分享一个截至2019年的最新答案:在Windows Server 2019上,设置环境变量后,需要重新启动才能解决问题。

于 2019-05-29T10:06:41.913 回答
4

当从任何旧版本的 RabbitMQ升级到版本 3.6.9时,Windows 上的 Erlang 18.3 (erl7.3) 和 RabbitMQ 3.6.9 中仍然会出现此问题。此处已经说明的解决方案是在启动服务之前使用' setx -m ERLANG_HOME "C:\Program Files\erl7.3 "' 手动设置 ERLANG_HOME。

发生的情况是 RabbitMQ 3.6.9 安装程序从系统中删除了环境变量 ERLANG_HOME,同时删除了旧版本的 RabbitMQ。然后,当它进入安装步骤时,它不会放回 ERLANG_HOME 变量。然后,启动 RabbitMQ 的批处理文件找不到 Erlang。他们尝试使用“where.exe”找到 Erlang 的主目录,但升级后总是失败。

RabbitMQ 的安装程序也不会杀死所有的 Erlang 后台进程,导致它的许多文件由于 Windows“正在使用的文件”问题而无法删除。这会在 %APPDATA%\RabbitMQ 和“C:\Program Files\RabbitMQ”中留下“正在使用的文件”。这些进程是“erl.exe”、“erlsrv.exe”和“epmd.exe”。RabbitMQ 安装程序应该在关闭 RabbitMQ Windows 服务后终止这些进程。

RabbitMQ 在 Windows 上相当笨重。

于 2017-05-02T21:46:06.013 回答
3

我遇到了同样的问题。我通过进行如下三个更改来解决它。

  1. 更新环境变量中的路径变量"ERLANG_HOME" : "C:\Program Files\erl8.0"
  2. 更新“路径”变量"Path" : ";%ERLANG_HOME%\bin;"
  3. 在 C 盘中给自己FULL CONTROL权限。"Program Files"

它以这种方式对我有用。

于 2016-12-08T14:10:49.807 回答
1

有趣的是,这对你有用。Erl5.9.2 有两个错误记录,导致未安装的地方安装不完整%ERLANG_HOME%\bin

* 在 32 位机器上安装了 64 位 erlang *“程序无法启动,因为您的计算机中缺少 MSVCR100.dll。”

https://groups.google.com/d/topic/erlang-programming/wGtFLzapiQ0/discussion

尝试 5.9.1 或任何其他版本。他们还提到让安装程序的未来版本在失败时提醒您。

于 2012-09-28T01:51:32.373 回答
1

我刚刚遇到了这里提到的同样的问题。我在 Windows 7 机器上安装了 otp_win64_R15B02 并且一切正常,但是我在 Windows 2008 服务器上使用了相同的安装程序并且没有创建 bin 目录。然后我卸载了 otp_win64_R15B02 并下载了 otp_win64_R15B02_with_MSVCR100_installer_fix 并创建了 bin 目录。

我怀疑它在我的 Windows 7 系统上工作的原因是我安装了 Visual Studio 并且所需的库已经可用,这使得 otp_win64_R15B02 安装程序能够正常工作。

哦,如果你正在安装 Erlang 来运行 RabbitMQ,那么 RabbitMQ 安装将通过损坏的安装程序成功,但在 RabbitMQ 之后安装 otp_win64_R15B02_with_MSVCR100_installer_fix 将不起作用,只需卸载并重新安装 RabbitMQ 即可解决此问题。

于 2012-10-03T12:28:00.343 回答
1

只需在环境变量中给出 C:\Program Files\erl10.6\ 而不是 C:\Program Files\erl10.6\bin\erl.exe 即可。如果您打开 server.bat 文件,我就会知道问题,请在此处输入图像描述

于 2020-04-10T21:30:58.487 回答
0

我认为这是 Windows 上的编码问题。我看到了一个正确的值,但我在控制台上写了 echo %ERLANG_HOME% 该值带有问号。这些步骤修复它。

1.go环境变量窗口

2.编辑ERLANG_HOME项目

3.复制值,打开记事本并粘贴到那里

4.在记事本上再次复制并粘贴到编辑窗口

5.申请和退出窗口

6.关闭命令行工具并重新打开

7.运行rabbitmq bat文件。

于 2017-03-26T15:34:22.197 回答
0

我以一种快速而肮脏的方式解决了它,没有命名路径变量我打开了 bat 文件并替换了每次出现的

!ERLANG_HOME!\bin\erl.exe

例如,由于版本不同,硬编码路径可能对您来说是不同的路径

C:\Program Files\erl10.3\erts-10.3\bin\erl.exe

并更换

%RABBITMQ_HOME%\escript\rabbitmq-plugins

C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14\escript\rabbitmq-plugins
于 2019-05-11T15:48:22.603 回答
0

连我都是这个问题。问题是环境变量 ERLANG_HOME=c:\Program Files\erl9.0 从未存在过。

我交叉检查了路径。正确的路径是 c:\Program Files\erl9.3。

改正后

ERLANG_HOME=c:\Program Files\erl9.3

问题解决了。所以,绝对是路径问题。

于 2019-05-27T09:54:05.393 回答
0

在我的情况下,应该使用管理员角色运行安装 erlang

于 2020-04-02T05:10:06.827 回答
0
  1. 下载 Erlang 或 OTP -只应安装一个版本的 OTP

  2. 下载 RabbitMQ 安装程序

  3. 以管理员身份安装两个exe文件

  4. 为 Erlang 设置类路径。(设置classpath有点麻烦,请按照以下步骤操作)

    1. ERLANG_HOME使用名称和值设置新路径C:\Program Files\erl-23.1不要在此处复制 bin 文件夹
    2. 编辑系统“路径”并添加%ERLANG_HOME%\bin
  5. 转到开始 - 打开rabbitmq命令提示符并运行

    rabbitmq-plugins enable rabbitmq_management
    
  6. 导航到本地主机:15672

  7. 使用访客/访客登录

于 2020-10-16T08:22:45.327 回答
-1

如果上述解决方案对您不起作用,那么您可以尝试以下

  1. 为你的 rabbit mq 找到另一个兼容的 erlang 版本,例如 rabbit 3.7.x erlang version 20.3.x to 22.0.x all are compatible。

  2. 右键单击新下载的 erlang 版本,然后从属性中选择取消阻止文件的选项。

  3. 使用管理员权限运行 erlang。

  4. 重新运行rabbit mq exe

于 2019-07-04T18:49:28.350 回答