Openfire服务端源代码开发配置指南

本文将图文介绍如何把openfire(以3.8.1为例)源码配置导入Eclipse,编译并启动的详细过程。

目录:

  1. 下载源码
  2. 配置Eclipse项目
  3. ANT编译项目
  4. 运行Openfire项目

[一]、下载源码

打开网址:http://www.igniterealtime.org/downloads/source.jsp 选择目前最新版本 openfire_src_3_8_1.zip 下载。

[二]、配置Eclipse项目

1、把下载好的 openfire_src_3_8_1.zip 压缩包直接解压到Eclipse的工作目录(以我 D:\workspace_sun\ 为例),结构如下:

2、把 openfire_src\build\eclipse 目录下的文件夹setting、文件classpth、文件project全部copy到 openfire_src\ 目录下,然后把openfire_src\classpth、openfire_src\project修改成Eclipse工程配置文件格式:openfire_src\.classpath 、openfire_src\.project (如果无法修改文件名,copy任一现有项目的文件后修改其内容亦可)。

3、然后打开Eclipse,选择 File –> Import… –> Existing Projects into Workspace  选择D:\workspace_sun\openfire_src 导入即可:

导入后目录结构如下:

3、项目导入后编译错误的解决

目录:/openfire_src/src/plugins/clustering/src/java 报错是因为缺少coherence相应的包:coherence.jar、coherence-work.jar,具体信息可以参考:openfire_src/src/plugins/clustering/lib/README.TXT 中的说明。可以从其官网下载:http://www.oracle.com/technetwork/middleware/coherence/downloads/index.html

下载jar包后copy到目录:/openfire_src/src/plugins/clustering/lib 下,把这两个jar 添加到classpath中,直接在/openfire_src/.classpath 文件中添加如下内容即可:

目录:/openfire_src/src/plugins/sip/src/java 报错是因为 SipCommRouter.java和SipManager.java 这两个类没有实现抽象方法和完成异常处理,最简单的解决办法是利用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中填入:

-DopenfireHome=“${workspace_loc:openfire_src}/target/openfire”

注意:项目路径 ${workspace_loc:openfire_src}

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

3、运行后控制台日志如下:

4、浏览器中输入地址: http://127.0.0.1:9090 回车:

看到上述界面表示Openfire的源码配置、导入、编译、启动已经圆满成功了。

后续服务端配置指南的过程可以参考:http://www.micmiu.com/opensource/openfire/openfire-server-install

[五]、参考

本文介绍到此结束@Michael Sun.

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/opensource/openfire/openfire-src-config/

发表评论?

30 条评论。

  1. 非常感谢博主,我用的最新的3.10.3版本,好多jar没有,搞了两天总算可以正常启动了。自己的plugin ANT编译时常不出来。楼主有做过openfire plugin的开发吗? 不知道有没有demo 供小弟参考一下。

  2. java.lang.NoClassDefFoundError: org/jivesoftware/openfire/ServerStarter
    Caused by: java.lang.ClassNotFoundException: org.jivesoftware.openfire.ServerStarter

  3. 额,我用的3.10.2的,启动后显示的是这样的
    11:03:26,922 INFO log:186 – Logging initialized @544ms
    11:03:27,079 ERROR LocaleUtils:377 – Can’t find bundle for base name openfire_i18n, locale en
    11:03:27,081 INFO XMPPServer:517 – short.title 3.10.2 [Jun 30, 2015 11:03:27 AM]
    short.title 3.10.2 [Jun 30, 2015 11:03:27 AM]
    11:03:27,191 INFO Server:327 – jetty-9.2.9.v20150224
    11:03:27,306 INFO StandardDescriptorProcessor:297 – NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
    11:03:27,497 INFO CacheFactory:358 – Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Misses
    11:03:27,498 INFO CacheFactory:358 – Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Hits
    11:03:27,499 INFO ContextHandler:744 – Started o.e.j.w.WebAppContext@41c54797{/,file:/E:/workspace/openfire_src/target/openfire/plugins/admin/webapp/,AVAILABLE}{E:\workspace\openfire_src\target\openfire\plugins\admin\webapp}
    11:03:27,549 INFO ServerConnector:266 – Started ServerConnector@792bdcb2{HTTP/1.1}{0.0.0.0:9090}
    11:03:27,549 INFO Server:379 – Started @1183ms
    11:03:27,550 ERROR LocaleUtils:377 – Can’t find bundle for base name openfire_i18n, locale en
    11:03:27,550 INFO AdminConsolePlugin:339 – admin.console.listening http://ms-20150627hmdm:9090
    admin.console.listening http://ms-20150627hmdm:9090
    然后浏览器输入地址浏览就报错了

  4. lz,如何关闭openfire。。

  5. 😛 你好,我搭建了 也跑起来,很是感谢你的这帖子,
    我想问的是 进入系统初始化时候国际化不起作用 ,不知道是哪里出问题了 比如:???setup.host.settings.encryption_algorithm??? 这样的问题,请教下是不是编码的问题 ,谢谢!

  6. 我用的是openfire3.9.1,好不容易编译通过了,但是输入http://127.0.0.1:9090,啥都不显示,LZ有遇到过这个问题吗?

  7. LZ,请问我再用spark登陆的时候,在openfire中是用哪个java类来处理这个登陆请求的了?我在网上搜索都说是IQAuthHandler这个类,但是我debug的时候,并没有进入到这里。请问是什么原因了?

  8. 好棒!通俗易懂!
    除了配置-DopenfireHome=”${workspace_loc:openfire_src}/target/openfire”这里直接复制过去结果因为引号是中文的,结果报错了,又搜了一下才弄好。
    但是对能把我这个菜鸟引导到配置成功已经很好了。多谢楼主~~

    另外提个小建议,网站回到顶部的按钮只有页面到了底部才出现呢,可以改良一下~

  9. 吴空爸~你好,看了您的配置指南顿时茅塞顿开!然后刚好有三个问题 想请教您,望不吝赐教!谢谢,问题:
    1、openfire的服务端能否完美支持apple客户端 wp客户端 android客户端?我现在用的是android端
    2、openfire服务端的数据库是否可以使用自己的mysql?(貌似在配置的时候发现了有自己的数据库字样之类的~)
    3、我现在用的android客户端与openfire通讯,但是服务端向客户端发送数据没问题,一旦客户端向服务端发送数据则会掉线,不知这个您是否碰到过?我的openfire服务器是zip直接放到c盘并配置而成的。
    以上为问题 还望不吝赐教~谢谢!

    • 1.openfire的客户端通过XMPP协议就可以通信,官方有相关的java实现的lib包,这个和什么系统 什么语言没有太大关系,只要有相关实现这个协议即可
      2.数据库可以自定义 oracle mysql 都可以
      3.你说的问题我么有发现,不过我可建议你吧通信的所有过程的日志 输出或者debug下找找原因

      • 又来麻烦你了小哥~~请问xmpp协议和 openfire对android客户端的系统版本有没有要求?我这出现个问题 刚好是4.0。3版本妥妥的实现 2.3.4就无法实现

  10. 请问下 我关闭eclipse是不是 就相当于关闭了 openfire 服务器 在怎么打开 openfire呢?

    • 你在eclipse中启动,关闭eclipse当然相关应用会停止。一般启动openfire 官方下载包安装后有相关命令可以直接启动停止;如果你一定要在不打开eclipse 又想要用源码编译启动,那就命令行下启动org.jivesoftware.openfire.starter.ServerStarter即可(lib需要配置好)

  11. 你说的第二部可配置文件时指什么格式的文件

  12. 按这样的方法导入eclipse ,org.jivesoftware.admin.plugin这个包是空的,里面没有源码,这是怎么回事 openfire3.8.2

  13. 大牛!太有用了哦~我会一直关注你的博客学习的。还有就是新编译出来的源码的target\openfire\logs下面会需要手动创建四个log文件,分别是debug.log,error.log,info.log,warn.log,创建一下就ok了~

  14. 其它都很好,就是-DopenfireHome=“${workspace_loc:openfire_src}/target/openfire” 引号是中文的,o(︶︿︶)o 找了好半天。

  15. 非常有用的訊息
    對於我們這些不使用SVN的使用者 非常有用 感謝您的分享

回复给 desexy ¬
取消回复


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">