本文将图文介绍如何把openfire(以3.8.1为例)源码配置导入Eclipse,编译并启动的详细过程。
目录:
- 下载源码
- 配置Eclipse项目
- ANT编译项目
- 运行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 文件中添加如下内容即可:
1 2 |
<classpathentry kind="lib" path="src/plugins/clustering/lib/coherence.jar"/> <classpathentry kind="lib" path="src/plugins/clustering/lib/coherence-work.jar"/> |
目录:/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、运行后控制台日志如下:
1 2 |
Openfire 3.8.1 [Mar 18, 2013 11:23:33 PM] Admin console listening at http://127.0.0.1:9090 |
4、浏览器中输入地址: http://127.0.0.1:9090 回车:
看到上述界面表示Openfire的源码配置、导入、编译、启动已经圆满成功了。
后续服务端配置指南的过程可以参考:http://www.micmiu.com/opensource/openfire/openfire-server-install
[五]、参考
- Openfire 官网开发文档:http://community.igniterealtime.org/docs/DOC-1020
本文介绍到此结束@Michael Sun.
原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]
本文链接地址: http://www.micmiu.com/opensource/openfire/openfire-src-config/
非常感谢博主,我用的最新的3.10.3版本,好多jar没有,搞了两天总算可以正常启动了。自己的plugin ANT编译时常不出来。楼主有做过openfire plugin的开发吗? 不知道有没有demo 供小弟参考一下。
java.lang.NoClassDefFoundError: org/jivesoftware/openfire/ServerStarter
Caused by: java.lang.ClassNotFoundException: org.jivesoftware.openfire.ServerStarter
额,我用的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
然后浏览器输入地址浏览就报错了
哈哈,谢啦,我知道什么问题了,刚刚添加Folder没成功,重新添加一下就可以了,浏览器浏览成功了
我也报这个错误,您是怎么解决的啊???
lz,如何关闭openfire。。
启动和关闭都有自带命令的
😛 你好,我搭建了 也跑起来,很是感谢你的这帖子,
我想问的是 进入系统初始化时候国际化不起作用 ,不知道是哪里出问题了 比如:???setup.host.settings.encryption_algorithm??? 这样的问题,请教下是不是编码的问题 ,谢谢!
我用的是openfire3.9.1,好不容易编译通过了,但是输入http://127.0.0.1:9090,啥都不显示,LZ有遇到过这个问题吗?
启动之后 看看 logs文件夹下得日志
后面又可以了,还是要谢谢LZ 😛
LZ,请问我再用spark登陆的时候,在openfire中是用哪个java类来处理这个登陆请求的了?我在网上搜索都说是IQAuthHandler这个类,但是我debug的时候,并没有进入到这里。请问是什么原因了?
sorry 很久没有搞这个了,还真不是很清楚,最近太忙了没办法给你回复的
好棒!通俗易懂!
除了配置-DopenfireHome=”${workspace_loc:openfire_src}/target/openfire”这里直接复制过去结果因为引号是中文的,结果报错了,又搜了一下才弄好。
但是对能把我这个菜鸟引导到配置成功已经很好了。多谢楼主~~
另外提个小建议,网站回到顶部的按钮只有页面到了底部才出现呢,可以改良一下~
引号的问题我修正下
吴空爸~你好,看了您的配置指南顿时茅塞顿开!然后刚好有三个问题 想请教您,望不吝赐教!谢谢,问题:
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就无法实现
请问下 我关闭eclipse是不是 就相当于关闭了 openfire 服务器 在怎么打开 openfire呢?
你在eclipse中启动,关闭eclipse当然相关应用会停止。一般启动openfire 官方下载包安装后有相关命令可以直接启动停止;如果你一定要在不打开eclipse 又想要用源码编译启动,那就命令行下启动org.jivesoftware.openfire.starter.ServerStarter即可(lib需要配置好)
你说的第二部可配置文件时指什么格式的文件
sorry 我没有太明白你表达的意思
按这样的方法导入eclipse ,org.jivesoftware.admin.plugin这个包是空的,里面没有源码,这是怎么回事 openfire3.8.2
确实是这样的 这个具体没有研究 sorry
大牛!太有用了哦~我会一直关注你的博客学习的。还有就是新编译出来的源码的target\openfire\logs下面会需要手动创建四个log文件,分别是debug.log,error.log,info.log,warn.log,创建一下就ok了~
一般是不需要手工创建log文件的
其它都很好,就是-DopenfireHome=“${workspace_loc:openfire_src}/target/openfire” 引号是中文的,o(︶︿︶)o 找了好半天。
这个编辑的时候 没有注意到 不好意思
非常有用的訊息
對於我們這些不使用SVN的使用者 非常有用 感謝您的分享
多谢支持 多多交流有机会