openfire服务器开发环境搭建
2017-07-26 更新:直接获取最新版源码,就不会报错了,而且可支持的插件多,老版本的openfire几乎没有可用的官方插件。
系统及软件环境:
MAC OSX EI Capitan 10.11.5
Eclipse J2EE版本
Coherence.jar和Coherence-work.jar(百度云:链接: https://pan.baidu.com/s/1hrWGkmS 密码: tpbx),Coherence官网地址:http://www.oracle.com/technetwork/middleware/coherence/downloads/index.html
一、下载源码
1.下载Openfire源码,地址(https://github.com/igniterealtime/Openfire/releases?after=attic%2Ftrunk),此处我下载的是Openfire 3.8.2 Release版本。

二、导入源码
下载完之后解压文件目录如下:

此时不要急着用Eclipse导入项目,需要修改2处:
a.下载Coherence.jar和Coherence-work.jar,下载之后放到Openfire源码的Openfire-3.8.2/src/plugins/clustering/lib/目录下,这个目录下的README.txt文件中说明了需要3.7.1版本的Coherence的jar包。修改Openfire-3.8.2/build/eclipse/目录下面的"classpath"文件,使用文本编辑器打开,在末尾处添加两行jar的路径。
<classpathentry kind="lib" path="src/plugins/clustering/lib/coherence.jar"/>
<classpathentry kind="lib" path="src/plugins/clustering/lib/coherence-work.jar"/>

b.将Openfire-3.8.2/build/eclipse/目录下面的"classpath"、"project"、"settings"三个文件复制到Openfire-3.8.2/目录下,并分别改名".classpath"、".project"、".settings"(改名不能直接在文件名前面加点,可以用终端命令: mv "classpath" ".classpath")
然后使用Eclipse导入项目(File->Import)。
导入之后发现如下地方报错:


错误1. src/plugins/sip/src/java目录下的SipCommRouter.java和SipManager.java报错,可以用Eclipse的自动修复功能实现未实现的接口方法,添加异常处理代码,然后保存修改,错误就会消失。
错误2. src/java下面的错误需要导入jar,选中项目右键->Build Path->Configure Biuld Path,然后选择Libraries->Add JARs,找到项目目录下的build目录下的lib目录,依次导入这几个子目录下的jar文件。

导入完上述4个jar之后,Eclipse就不会报错了。
三、ANT编译项目
Eclipse已经集成了Ant,所以我们只需要在 /openfire_src/build/build.xml 文件右击,选择Run As –> Ant Build 即可完成编译,编程成功后,会在/openfire_src/的跟目录下生成两个新的文件夹:target 和 work 。

四、运行Openfire项目
1、配置资源文件
在Build Path配置中把 /openfire_src/src/i18n 、/openfire_src/src/resources/jar 、/openfire_src/build/lib/dist文件夹添加到 Source 中,如图:

2、配置启动参数
选择Run –> Run Configurations… 左边的Java Application,单击右键,选择 New:

把默认name:New_configuration 修改成:ServerStarter
选中Main选项卡,点击Browse按钮选择 openfire_src 项目;单击Search 按钮输入:ServerStarter 自动过滤后选择:ServerStarter – org.jivesoftware.openfire.starter:

选中Arguments选项卡,在VM arguments中填入:(下面标红的地方填写的是你导入后在Eclipse中的项目名称,这个名称需注意,有可能不是openfire_src,比如我的就是openfire,不一样的地方需要修改)
-DopenfireHome="${workspace_loc:openfire_src}/target/openfire"
注意:项目路径 ${workspace_loc:openfire_src}

选中Common选项卡,将Debug和Run打钩(方便之后快速启动),然后点击apply,再点击run:

服务器Run之后控制台会打印消息:

打开浏览器输入地址:http://127.0.0.1:9090出现openfire的安装界面,说明启动成功。

参考链接:
http://www.myopenfire.com/article/getarticle/6
http://www.micmiu.com/opensource/openfire/openfire-src-config/
openfire服务器开发环境搭建的更多相关文章
- node.js之开发环境搭建
一.安装linux系统 (已安装linux可跳此步骤) 虚拟机推荐选择:VirtualBox 或者 Vmware (专业版永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N) 我这 ...
- TODO:小程序开发环境搭建
TODO:小程序开发环境搭建 1.第一步当然是要先注册小程序了 2.登录到小程序 a)完善小程序信息,如名称,图标,描述 3.绑定开发者 4.获取AppID,并设置服务器信息 5.下载并安装开发者工具 ...
- Eclipse中Python开发环境搭建
Eclipse中Python开发环境搭建 目 录 1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...
- Cordova+ionic 开发hybird App --- 开发环境搭建
Cordova 开发hybird App 开发环境搭建 一.一些基础概念: Ant : 简单说来可以这么理解,如果你用记事本写JAVA程序,然后在cmd里输入javac命令编译它,但是有一天你发现每次 ...
- Centos 基础开发环境搭建之Maven私服nexus
hmaster 安装nexus及启动方式 /usr/local/nexus-2.6.3-01/bin ./nexus status Centos 基础开发环境搭建之Maven私服nexus . 软件 ...
- (转载)JAVA敏捷开发环境搭建
整个软件项目分为四个环境 开发本地环境.开发环境.测试环境.IDC环境.和传统C++开发不一样的模式是多了第一个开发本地环境.这是为什么呢,因为目前大部分开发人员还是比较熟悉windows下开发.对于 ...
- Struts2开发环境搭建,及一个简单登录功能实例
首先是搭建Struts2环境. 第一步 下载Struts2去Struts官网 http://struts.apache.org/ 下载Struts2组件.截至目前,struts2最新版本为2.3.1. ...
- monkeyrunner之安卓开发环境搭建(一)
在学习monkeyrunner之前,让我们先搭建好eclipse安卓开发环境. 对于程序开发人员而言,eclipse并不陌生,它提供了一个非常广阔的平台来开发程序.同样也可以用它来开发android程 ...
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭 ...
随机推荐
- 求最小正整数x,A^x=1(mod M)求阶模板
整数的阶:设a和n是互素的正整数,使得a^x=1(mod n)成立的最小的正整数x称为a模n的阶 //求阶模板:A^x=1(mod M),调用GetJie(A,M) //输入:10^10>A,M ...
- 【BZOJ4033】[HAOI2015]树上染色 树形DP
[BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...
- 【BZOJ1125】[POI2008]Poc hash+map+SBT
[BZOJ1125][POI2008]Poc Description n列火车,每条有l节车厢.每节车厢有一种颜色(用小写字母表示).有m次车厢交换操作.求:对于每列火车,在交换车厢的某个时刻,与其颜 ...
- Wooden Sticks(hdu1051)
Wooden Sticks Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submi ...
- 关于iOS的手势UIGestureRecognizer问题
typedef NS_ENUM(NSInteger, UIGestureRecognizerState) { UIGestureRecognizerStatePossible, // 尚未识别是何种手 ...
- Django之权限用法
**记住每一个url都是一个权限** 注册 可插拔试的权限,可以先写其他的逻辑,在最后再把权限加上 将rbac组件拷贝到项目上,注册项目 修改表结构 将写好的用户表对rbac的User表进行一对一的关 ...
- Symfony 如何使用ckeditor
首先: 1)加载以下两个bundle "egeloen/ckeditor-bundle": "^4.0","helios-ag/fm-elfinder ...
- 基于Spring框架的Shiro配置(转发:http://kdboy.iteye.com/blog/1103794)
一.在web.xml中添加shiro过滤器 <!-- Shiro filter--> <filter> <filter-name>shiroFilter</f ...
- QMessageBox简单使用
首先要调用 #include <QMessageBox> 然后 QMessageBox msgBox; msgBox.setWindowTitle("错误"); msg ...
- poj 3264 Balanced Lineup【RMQ-ST查询区间最大最小值之差 +模板应用】
题目地址:http://poj.org/problem?id=3264 Sample Input 6 3 1 7 3 4 2 5 1 5 4 6 2 2 Sample Output 6 3 0分析:标 ...