文档章节

【原创】Windows下使用 Eclipse 管理 RabbitMQ 源码之问题解决

摩云飞
 摩云飞
发布于 2013/01/06 00:56
字数 680
阅读 1306
收藏 5

      使用 Eclipse + Erlide 来管理 Erlang 代码是一种常见方式。本文简要说明下,本人在 Windows 下管理 RabbitMQ 代码时遇到的小问题。

      首先,搭建好 Eclipse + Erlide 的环境,方法略;然后,将下载好的 RabbitMQ 源码放置在指定的目录中,比如 D:\ErlangCode\rabbitmq-server-3.0.0 ,目录中的内容如下图所示:

      照道理讲,一般源码包中的 README 和 INSTALL 会说明源码包的使用方式,当时 RabbitMQ 的不是,这两个文件中都仅仅给出了到官网的网页链接,其中一个网页中提到了

Change to the rabbitmq-server directory, and type make.

      好吧,以上用法时针对 Unix-like 中的 make 方式的。如果你打算在 Windows 中搭建个 linux 模拟环境以使用 make 命令按上面说的,执行个 make 就 ok 了。但我不想搭环境,也不打算直接在 Linux 上执行命令后,再将文件拷回到 Windows 上来,所有我要研究下如何解决这个问题。好,先将这个问题暂停下,说说我在 Eclipse 上得到了什么。

      将 RabbitMQ 工程导入到 Eclipse 中后,你能看到下图所示内容:

      恩,该导入的都导入了,但是出现了很多红色的叉,可以看到 Problems 标签下的 Error 描述信息为 “can't find include file "rabbit_framing.hrl"” ,回到源码所在的根目录中搜索该文件,该文件确实是不存在的,恩,该文件不存在的原因我就不啰嗦了,可以在官方文档中找到答案,我们需要解决的是如何得到该文件。

      在没有其他线索的情况下,最好的办法还是看看源码包中的其他文件,看看是否有什么相关的。最后可以定位到 rabbitmq-server-3.0.0 中的 Makefile 文件。其中能说明问题的代码是

$(INCLUDE_DIR)/rabbit_framing.hrl: codegen.py $(AMQP_CODEGEN_DIR)/amqp_codegen.py $(AMQP_SPEC_JSON_FILES_0_9_1) $(AMQP_SPEC_JSON_FILES_0_8)
	$(PYTHON) codegen.py --ignore-conflicts header $(AMQP_SPEC_JSON_FILES_0_9_1) $(AMQP_SPEC_JSON_FILES_0_8) $@

      可以看出 rabbit_framing.hrl 文件的产生,依赖了  codegen.py 、amqp_codegen.py 、$(AMQP_SPEC_JSON_FILES_0_9_1) 及 $(AMQP_SPEC_JSON_FILES_0_8) 对应的文件。后两个宏的定义同样可以找到:

AMQP_SPEC_JSON_FILES_0_9_1=$(AMQP_CODEGEN_DIR)/amqp-rabbitmq-0.9.1.json
AMQP_SPEC_JSON_FILES_0_8=$(AMQP_CODEGEN_DIR)/amqp-rabbitmq-0.8.json

      好,现在按照上面脚本中的命令,在 CMD 中执行:

      此时查看 include 目录你会发现已经生成了我们要的文件:

      按照上面的方法,生成后续需要的另外两个文件 -- rabbit_framing_amqp_0_9_1.erl 和 rabbit_framing_amqp_0_8.erl :

      此时,在 Eclipse 中对 RabbitMQ 工程执行 Refresh 动作,你会发现所有的红色叉叉都没了,世界变美好了,哈哈~~

      接下来,该干啥干啥吧~~


© 著作权归作者所有

共有 人打赏支持
摩云飞
粉丝 367
博文 534
码字总数 952694
作品 0
徐汇
程序员
加载中

评论(2)

haytao
haytao
为什么我不能导入,请教!!35
Smile月光
Smile月光
【原创】RabbitMQ 之 Plugins(翻译)

为了方便工作中使用,对 RabbitMQ 的【插件】相关文档进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。此文以中英对照方式呈现。 官方原文:http://www.rabb...

摩云飞
2012/12/12
0
0
【原创】rabbitmq-service用户手册(翻译)

为了方便工作中使用,周末抽空对 rabbitmq-service 用户手册进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。 官方原文:http://www.rabbitmq.com/man/rabbi...

摩云飞
2012/11/12
0
0
解决RabbitMQ远程不能访问的问题

刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,不能使用IP地址登录...

dwf07223
06/28
0
0
RabbitMQ 远程 IP 访问 解决办法 -摘自网络

刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,不能使用IP地址登录...

andrewniu
05/10
0
0
rabbitmq3.6.6源码安装

系统要求 系统:centos7 Erlang/OTP:最小要求R16B03 最大不能大于19.3.x rabbitmq版本:3.6.6 rabbitmq依赖erlang环境,所以需要先安装Erlang 安装rabbimt3.6.6 rabbitmq端口 下载源码包 解...

SA_小科
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
27
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部