最近在折腾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

  工具库就编译成能在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(erlide)中的配置、调试、运行的更多相关文章

  1. 方便mac os 10.9系统中phpstorm配置php运行环境

    自己安装php,不用mac安装,这样就有php开发环境了. 安装很简单,直接运行一个命令, 需要几分钟,请慢慢等待. curl -s http://php-osx.liip.ch/install.sh ...

  2. Struts 2.5.20 在Eclipse IDE中的配置和开发实例

    零.参考博客1.Struts框架入门教程2.Struts 2.5.10.1配置 3.eclipse中搭建Struts2.5.16 4.Struts2.5+eclipse+tomcat8.5配置 注意: ...

  3. Eclipse/Myeclipse中查看和调试JDK源代码的方法

    看过这篇文章后,实践写的 http://blog.csdn.net/qq_27857857/article/details/71250401 一共做了以下几部: 第一步: 第二步: 一直next,到第 ...

  4. vue-cli中webpack配置解析

    版本号 vue-cli 2.8.1 (终端通过vue -V 可查看) vue 2.2.2 webpack 2.2.1 目录结构 ├── README.md ├── build │ ├── build. ...

  5. Eclipse中安装配置Tomcat

    Eclipse(4.4.x及以上)中安装配置Tomcat 以下配置说明全部针对免安装版本 基于tomcat的安装目录和运行目录是可以不同的,本文都会进行说明 首先简单介绍一下tomcat的目录结构,一 ...

  6. Hadoop在eclipse中的配置

    在安装完linux下的hadoop框架,实现完所现有的wordCount程序,能够完美输出结果之后,我们开始来搭建在window下的eclipse的环境,进行相关程序的编写. 在网上有很多未编译版本, ...

  7. eclipse中tomcat配置(待完善)

    tomcat版本:apache-tomcat-6.0.29 项目结构:     一.新建server方式 二.eclipse tomcat plugin方式   tomcat plugin方式必须保证 ...

  8. Eclipse中应用的调试

    作为编程人员,程序的调试是一项基本功.在不使用IDE的时候,程序的调试多数是通过日志或者输入语句(System.out.println)的方式.可以把程序运行的轨迹或者程序运行过程中的状态显示给用户, ...

  9. git在eclipse中的配置 转载

    git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...

随机推荐

  1. 创建你的第一个JavaScript库

    是否曾对Mootools的魔力感到惊奇?是否有想知道Dojo如何做到那样的?是否对jQuery感到好奇?在这个教程中,我们将了解它们背后的东西并且动手创建一个超级简单的你最喜欢的库. 我们其乎每天都在 ...

  2. JavaScript 快速排序(Quicksort)

    "快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,选择一个元素作为"基准"(pivot). (2)所有小于"基准"的元 ...

  3. 将十六进制色值转换成Color

    在给Background赋值时,除了自带的Red,Blue,Black等,可以通过以下方法赋予其他颜色. 主要是将Hex转换成ARGB(A:alpha,表示透明度.R:Red.G:Green.B:Bl ...

  4. App提交iTunes Connect,"二进制无效"问题解决方案。

    昨天提交打包提交App,将包上传到iTunes Connect之后,以为就能发布了,便点击构建版本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传&qu ...

  5. APP常用字体

    font-family:Microsoft YaHei,Helvitica,Verdana,Tohoma,Arial,san-serif;

  6. PHP错误处理函数set_error_handler()的用法

    定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数. 该函数用于创建运行时期间的用户自己的错误处理方法. 该函数会返回旧的错误处理程序,若失败,则返回 null. 语 ...

  7. PHP realpath() 函数

    定义和用法 realpath() 函数返回绝对路径. 该函数删除所有符号连接(比如 '/./', '/../' 以及多余的 '/'),返回绝对路径名. 若失败,则返回 false.比如说文件不存在的话 ...

  8. Yslow-23条规则

    1. 减少HTTP请求次数 合并图片.CSS.JS,减少首次访问用户等待时间. 2. 使用CDN就近缓存==>智能路由==>负载均衡==>WSA全站动态加速 3. 避免空的src和h ...

  9. 启动apache和tomcat端口被占用解决办法

    1,打开控制台,使用命令 netstat -aon|findstr 8090  找出端口被占用的进程, 2,使用 taskkill -f -pid 4116(进程id)杀掉当前占用端口的进程

  10. 编译Android源码

    编译版本要求 基本安装环境 ubuntu 14.04 64 sudo apt-get install git-core gnupg flex bison gperf build-essential \ ...