Openfire3.9.3源代码导入eclipse中开发配置教程
来源:互联网 发布:贵金属手机交易软件 编辑:程序博客网 时间:2024/05/18 17:02
这篇文章向大家介绍一下,如何把openfire3.9.3源码导入eclipse中,编译并启动的详细过程。
首先得感谢这篇文章的作者,http://www.micmiu.com/opensource/openfire/openfire-src-config/,正是在这篇文章的帮助之下,我成功将openfire导入eclipse,本文大部分内容也是那篇文章的,我冠以原创之名,是为了留个笔记和在新版中出现的问题给大家一点帮助,毕竟我也花了不少的时间,希望不会被说成侵权。
入正题,看到这篇文章的的网友应该已经安装了jdk,eclipse,我就不在安装这些开发工具上赘述了,附载一下openfire的下载地址:http://www.igniterealtime.org/downloads/index.jsp。
ps:可能现在的官网最新版本已经不是3_9_3了,也许你找不到下载地址,这里提供一个小技巧,就是你先点击进去下载最新版本的页面,然后浏览器就会有下载链接地址,版后面的改成你要的相应版本号就可以。
1、下载源码openfire_src_3_9_3.zip,目前最新的版本是3.9.3
2、把下载好的openfire_src_3_9_3.zip解压到工作空间,结构和目录如下:
3、把openfire_src\build\eclipse目录下面的settings、classpath、project全部复制到openfire_src\ 目录下,然后把openfire_src\classpth、openfire_src\project、openfire_src\settings修改成Eclipse工程配置文件格式,重命名为在每个原有的名字上加上一个点,即.classpth、.project、.settings。注意:在windows下面不能直接重命名,需要在dos下面操作,即进入相应的目录执行,rename classpth .classpth即可,其它两个文件执行一样的操作:
4、然后打开Eclipse,选择 File –> Import… –> Existing Projects into Workspace 选择F:\workspace\openfire_src 导入即可:
导入后目录结构如下:
大家会发现自己这个项目上出现了一个感叹号,进入构建路径,会发现:
这说明这个jar包缺失了,选中这个文件,然后点击右边的Remove按钮,将其移除,当然,我们也可以去网上下载一个,点击右边的Add JARs...将其加上,不过我没加也没出现问题,可能是某些插件需要这个jar包,现在不管他了。
移除后出现三个错误,没关系,我们一步步修复错误,\openfire_src\src\java报错,是因为有jar包,没有引进来,我们将其引进即可:
注意:一次只能引用一个,所以需要操作四次,才行。点击OK以后,我们发现\openfire_src\src\java上的错误已经没有了。\openfire_src\src\plugins\clustering\src\java报错,是因为缺少coherence.jar,coherence-work.jar,tangosol.jar这三个jar包,我们将复制到\openfire_src\src\plugins\clustering\lib目录下,然后将这三个jar包,加入构建路径:
这时我们发现\openfire_src\src\plugins\clustering\src\java上的错误已经消失了,这里我提供一下这三个jar包的下载地址,http://download.csdn.net/detail/su_tianbiao/8653959,当然,你也可以去其它地方下载。
最后一个在\openfire_src\src\plugins\sip\src\java上的报错是因为 SipCommRouter.java和SipManager.java 这两个类没有实现抽象方法和完成异常处理,最简单的解决办法是利用Eclipse自动修复功能进行修复即可。现在我们发现我们的项目已经没有任何错误了。
5、ANT编译项目
Eclipse已经集成了Ant,所以我们只需要在 /openfire_src/build/build.xml 文件右击,选择Run As –> Ant Build 即可完成编译,编程成功后,会在/openfire_src/的跟目录下生成两个新的文件夹:target 和 work 。
6、运行Openfire项目
①、在Build Path配置中把 /openfire_src/src/i18n 、/openfire_src/src/resources/jar 、/openfire_src/build/lib/dist 文件夹添加到 Source 中,如图:
②配置启动参数
选择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:
③运行后控制台日志如下:
④浏览器中输入地址: http://127.0.0.1:9090 回车:
看到上述界面表示Openfire的源码配置、导入、编译、启动已经圆满成功了。
终于完成了,希望对大家有帮助,下一篇,我将介绍怎样在Openfire中开发插件
参考:Openfire 官网开发文档
最后附上可能错误解决方法:
错误处理
在配置完成后,有些同学启动项目并不会正常启动,而是会出现一些其他错误。
比如说:
- log4j:WARN No appenders could be found for logger (org.jivesoftware.util.Log).
- log4j:WARN Please initialize the log4j system properly.
- Could not locate home
- java.io.FileNotFoundException
- at org.jivesoftware.openfire.XMPPServer.locateOpenfire(XMPPServer.java:874)
- at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:347)
- at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:468)
- at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:212)
- at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
- at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
- at java.lang.reflect.Constructor.newInstance(Unknown Source)
- at java.lang.Class.newInstance0(Unknown Source)
- at java.lang.Class.newInstance(Unknown Source)
- at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:113)
- at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:58)
- 启动服务器时出错。请检查日志文件以获取更多信息。
这种情况是由于源码中配置的路径错误引起的,请打开文件org.jivesoftware.openfire.XMPPServer
我们来看这一行
- // If we still don't have home, let's assume this is standalone
- // and just look for home in a standard sub-dir location and verify
- // by looking for the config file
- if (openfireHome == null) {
- try {
- openfireHome = verifyHome("..", jiveConfigName).getCanonicalFile();
- }
- catch (FileNotFoundException fe) {
- // Ignore.
- }
- catch (IOException ie) {
- // Ignore.
- }
- }
请看verifyHome方法的第一个参数,这里配置的就是相对的路径“..”而我们重新编译的时候,配置到的路径不是这里,那么就要根据你配置的路径来修改前面的地址。
我的是这样:
- openfireHome = verifyHome("D:\\openfire_src\\openfire_src\\target\\openfire", jiveConfigName).getCanonicalFile();
我的配置在:openfire_src\\openfire_src\\target\\openfire文件夹下。
设置完毕之后,重新启动,就可以正常使用了!
这里有必要补充一下数据库乱码问题:
解决openfire在使用MySQL数据库后的中文乱码问题
openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据存储可以采用多种数据库,如MySQL,Oracle等。
在实际使用时大家遇到最多的就是采用MySQL数据库后的中文乱码问题,这个问题十分有趣,而且从现象上可以看出openfire内部的一些机制。
实际问题是这样的:首先启动openfire服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等。如果不重启服务器,你永远不会觉得有什么不对的地方,因为所有的中文显示都是正常的。接下来重启一下openfire,再用建立的帐号登录客户端或进入后台管理端查看,会发现所有的中文全都变成了问号。登录到数据库中进行查看,发现所有的中文字符也均为问号,这说明了两个问题:
openfire具有应用层缓存
数据库编码存在问题
解决办法其实也很简单,首先要保证你为openfire创建的数据库编码是utf8的,建表语句如下:
create database openfire default character set utf8 default collate utf8_general_ci
当你原来就创建好数据库时,你可以用:
alter database openfire default character set utf8 default collate utf8_general_ci;
其次,在初始化openfire数据库,即第一次配置openfire服务器时,在连接数据库那里的连接串要加入字符编码格式,必须在连接里增加UTF8的编码要求,连接字符串设置如下:
jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8
如果已经安装完成,这个配置也是可以改动的,直接到openfire的安装目录下,找到conf/openfire.xml这样一个文件,打开找到如下的XML节,修改其中的serverURL即可
<database>
<defaultProvider>
<driver>com.mysql.jdbc.Driver</driver>
<serverURL>jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8</serverURL>
注意:由于&具有特殊含义,因此原&符号必须被转义为&
- Openfire3.9.3源代码导入eclipse中开发配置教程
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire3.9.3源代码导入eclipse中开发配置指南
- openfire3.9.3导入eclipse
- 如何把openfire3.9.3源码导入eclipse中
- openfire3.9.3导入eclipse 按步骤来,可以正确导入!
- openfire3.9.3集群配置
- Openfire3.9.3 + spark2.6.2 + oracle10 开发配置指南(一)
- Openfire3.9.3 + spark2.6.2 + oracle10 开发配置指南(二)
- Openfire3.9.3 + spark2.6.2 + oracle10 开发配置指南(三)
- perl面向对象
- Repeated DNA Sequences
- 控制台使用CString
- c 语言 前言
- UVa 11235 频繁出现的数值
- Openfire3.9.3源代码导入eclipse中开发配置教程
- iOS 开发库(iOS Developer Library)
- Adblock Plus的设置
- hdoj 3789 奥运排序问题
- 面试题50:树中两个结点的最低公共祖先
- solr的简单使用说明
- 删除编辑文件警告Swap file “…” already exists!
- VC实现文件拖放
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结