ejabberd 在eclipse(erlide)中的配置、调试、运行

 

最近在折腾ejabberd,将ejabberd项目配置到eclipse中进行编译、调试等,现在将过程记下来,希望能帮助到需要的人。

准备

  1. 本次环境是在linux中进行,博主的linux是fedora20.
  2. 安装erlang
  3. 安装eclipse
  4. 安装eclipse插件:erlide
  5. 以上安装过程请自行搜索相关教程,本文略。

  下面我们就把将ejaberd导入eclipse过程中所遇到的问题各个击破。

下载ejabberd项目源代码,将整个工程导入到eclipse中,怎么导就别问我啦!然后就是惨不忍睹的各种错误:

  • -include_lib("p1_xml/include/xml.hrl").错误
  • 凡是用到xml模块的地方都是错误,例如  类似  presence :: {binary(), xmlel()} ——type xmlel() undefined错误,该错误系include 相关库失败导致

  改错误是因为项目中引用了process-one的一些基础设施或者说工具模块:

  • esip
  • goldrush
  • lager——用于错误日至的格式化输出
  • p1_cache_tab
  • ...

  解决方法如下:

  在ejabberd的源代码文件夹根目录下,终端中运行:

  ./rebar get-deps

  这会下载所需的工具模块,放在deps文件夹下

  然后编译工具库:

  ./rebar compile

./rebar get-deps 执行可能报错 检查一下git 是否已经安装,git是否已经加入PATH  如果没有 将 /usr/libexec/git-core 加入PATH

  工具库就编译成能在erlang环境运行的模块,很多模块都是用 application behaviour编写的,在ejabberd中会见到很多形如:application:start(app名称).这样的代码,启动工具应用程序。

  下载编译好之后将deps目录下的所有文件复制到你系统中的erlang所在的lib文件夹下,如我的系统用如下命令:

  sudo cp -R ./deps/*  /usr/local/lib/erlang/lib/

  请将目标目录替换成自己系统中的目录,这样erlang就能用这些应用和模块了,include_lib语句也happy了。

  解决了上面的问题之后还有一个大问题:找不到XmppAddr.hrl文件!!!

  XmppAddr.hrl需要从XmppAddr.asn1中产生,这个文件在源代码文件夹下的asn1文件夹里面,用erlang的编译工具能够将其编译成.hrl文件。具体请参见:http://www.erlang.org/doc/apps/asn1/asn1_ug.html,这里从略。我可以贴出我产生的文件如下:

%% Generated by the Erlang ASN.1 compiler version:3.0.1
%% Purpose: Erlang record definitions for each named and unnamed
%% SEQUENCE and SET, and macro definitions for each value
%% definition,in module XmppAddr -ifndef(_XMPPADDR_HRL_).
-define(_XMPPADDR_HRL_, true). -define('id-on-xmppAddr', {1,3,6,1,5,5,7,8,5}).
-endif. %% _XMPPADDR_HRL_

将以上内容命名为XmppAddr.hrl并拷贝到ejabberd项目include文件夹下。

最后eclipse所选择的erlang runtime 要和之前编译工具库的一样,不然同样无法运行,设置办法如下:

在菜单中 : Window/Prefrences/Erlang/Installed runtimes 中勾选对应的runtime。

经过以上之后ejabberd就能在eclipse中编译了,但是距离跑起来还有很大的差距。

  ejabberd.app 文件缺失,解决方法是将src文件夹下的ejabberd.app.src.in文件 改名为ejabberd.app放入编译输入目录,即.beam文件目录,也即ebin文件夹下。

此时如果分步运行的话可以运行许多启动代码,但估计程序会找不到 配置文件而终止,这些请自己跟踪代码,自自行修改制定,并重新编译即可。

  ejabberd启动方式:在elipse的console中(已进入erlang命令行)运行:

  erjabberd:start(). %%这个是ejabberd的入口!

大致如此,有问题请随时提问。

Ejabberd导入到eclipse的更多相关文章

  1. maven创建web工程,并导入到eclipse中

    maven版本:3.1.0,eclipse版本:4.3 JDK:1.7 创建工程名是sa的maven工程 mvn archetype:create -DgroupId=com.bing-Dartifa ...

  2. JAVA文件夹导入到Eclipse中方法:

    将JAVA文件夹导入到Eclipse中方法:方法一: 直接将java文件夹复制,然后粘贴到项目下:方法二:1.打开eclipse,点击项目的空白处,选择import:2.选择Existing Proj ...

  3. 如何将Android默认的Camra程序导入到eclipse中

    由于工作需要将camera源码导入到Eclipse中,找了很多的方法,现将自己的整理发出来.... 由于开发的要求,需要将Android默认的Camra程序导入到eclipse中,进行修改和再开发. ...

  4. Openfire3.9.1+jdk1.7导入到eclipse中

    Openfire3.9.1+jdk1.7导入到eclipse中 写这篇文章,也是记录一下自己几晚上的辛苦,因为作为新手在网上看了很多的资料,但是按照他们的我总是出不来,跟他们描述的不一致,可能是环境问 ...

  5. 将web项目导入到eclipse中常见错误

     将web项目导入到eclipse中常见错误  错误1:string cannot be resolved to a type  原因:这种情况一般是因为你的JDK版本没有设置好,或者设置的有不一致的 ...

  6. SVN下载项目导入到eclipse中出现错误解决办法:

    首先要确定settings.xml配置路径正确 (下面是我自己的路径,设置自己的路径) 用客户端暴力解决方法: 1)把本地中工作空间中内容删除重新下载 2)导入到eclipse中 会出现一些问题 右键 ...

  7. spring 源码如何导入到eclipse

    spring 源码如何导入到eclipse spring源码解析——spring源码导入eclipse spring framework源码下载并导入eclipse

  8. 5- 如何把MyEclipse中的web项目导入到Eclipse中运行

    from: 如何把MyEclipse中的web项目导入到Eclipse中运行 2016年09月12日 20:57:51 dancheren 阅读数:35329 标签: eclipse 更多 个人分类: ...

  9. Cassandra2.0.8导入到eclipse运行

    如果想通过eclipse来调试或者查看Cassandra的代码,将其project导入到eclipse之中不愧是个好选择.下面将讲述将2.0.8 版本导入elcipse的过程. 该篇文章主要参考的官方 ...

随机推荐

  1. Activity系列讲解---三大基本状态与七大生命周期函数

    简介:四大组件之一,在应用中一个Activity可以用来表示一个界面,可以理解为用户可视化界面,一个android应用必须通过Activity来运行和启动. 1.三大基本状态与七大生命周期函数 2.代 ...

  2. ACM/ICPC 之 计算几何入门-叉积-to left test(POJ2318-POJ2398)

    POJ2318 本题需要运用to left test不断判断点处于哪个分区,并统计分区的点个数(保证点不在边界和界外),用来做叉积入门题很合适 //计算几何-叉积入门题 //Time:157Ms Me ...

  3. 10.OC中retainCount返回值不准的原因

    翻看该方法的参考文档,苹果对retainCount方法的描述如下: retainCount Do not use this method. (required) - (NSUInteger)retai ...

  4. oracleDBA-D1

    一.数据库备份 1.测试系统环境:win10 64位 企业版 测试数据库环境:oracle11gR2 2.步骤: I.首先以sysdba权限用户登录数据库,命令: SQL> connect  超 ...

  5. JDBC的操作总结

    JDBC  操作总结 JDBC是一组能够执行SQL语句的API JDBC的操作方式比较单一,简单的分为以下几个流程:  1.通过数据库厂商提供的JDB类库想DriverManager注册数据库驱动   ...

  6. XStream xml 解析框架使用笔记

    1. xml的标签可以映射为类.类成员变量 2. 有子标签的标签映射为类,没有子标签的便签映射为类成员变量 3. 类名.类成员变量名如与标签名不一致需要通过注解或代码设置别名 // 类名 @XStre ...

  7. LINUX命令批量替换文件中的字符串

    sed -i "s/abcd/1234/g" `grep abcd -rl /home/data` find /data/web  -type f -exec  sed -i 's ...

  8. [Python数据分析]新股破板买入,赚钱几率如何?

    这是本人一直比较好奇的问题,网上没搜到,最近在看python数据分析,正好自己动手做一下试试.作者对于python是零基础,需要从头学起. 在写本文时,作者也没有完成这个小分析目标,边学边做吧. == ...

  9. Oracle 和 SqlServer 的区别

    --sql server 与  oracle的区别: --DBMS 数据库管理系统--1.数据类型不同.      --sql server 的数据类型:int ,smallint ,char,var ...

  10. Duilib源码分析(二)控件构造器—CDialogBuilder

    上一节了解了大体流程,但是界面控件元素是如何被加载.解析.构建.管理.控件消息如何处理的呢?接下来我们将结合控件构造器进行分析: CDialogBuilder:控件构造器,主要用以解析xml配置文件并 ...