Openfire部署源码到idea_2018-02-08 16:36:27

最近研究openfire即时通讯服务器,但是过程相当不顺利,将源码部署到idea上,在网上海量搜索,加群等弄了近3天的时间才弄好,也以此记录一下过程,和常见的问题,希望这篇文章能让研究openfire的筒子们少走一些弯路,毕竟idea有一点点不是很喜欢openfire。

环境说明:windows7+IntelliJ IDEA 2016+openfire 4.0.2+JDK1.8

一、解压openfire源码,解压后的文件夹名称可根据个人喜好修改,我的结构是这样的,如图:

Openfire部署源码到idea_2018-02-08 16:36:27_第1张图片
image

二、使用idea导入源码

2.1.打开idea,选择import project

Openfire部署源码到idea_2018-02-08 16:36:27_第2张图片
image

2.2.选择刚刚的源码目录进行导入

Openfire部署源码到idea_2018-02-08 16:36:27_第3张图片
image

2.3.选择根据源码创建项目

Openfire部署源码到idea_2018-02-08 16:36:27_第4张图片
image

2.4.然后一路无脑next,直到完成,网上很多人说,需要去掉rayo和monitoring的插件,不然后面编译会有问题,但这其实只是知其然不知其所以然的表现,这里不用去掉,后面我会进行说明,至此,源码导入完成,如图:

Openfire部署源码到idea_2018-02-08 16:36:27_第5张图片
image

三、开始进行相关设置,和中途遇到的问题说明及解决方法

3.1,首先使用ant在源码中打开build.xml文件,并进行构建:

Openfire部署源码到idea_2018-02-08 16:36:27_第6张图片
image

3.2完成以后,可以点击过滤按钮(过滤不需要的ant构建),使ant结构更清晰一点:

Openfire部署源码到idea_2018-02-08 16:36:27_第7张图片
image

3.3.然后点击run

Openfire部署源码到idea_2018-02-08 16:36:27_第8张图片
image

3.4这时可能会出现第一个问题:找不到JDK

Openfire部署源码到idea_2018-02-08 16:36:27_第9张图片
image

3.5解决方法 :打开Project Structure,默认快捷键:Ctrl+Shift+Alt+S

添加JDK,我安装的是JDK1.8,但是环境使用1.7,输出目录使用默认的/out目录,老的项目建议使用1.5-1.7的JDK,1.8JDK的很多新特性容易导致很多问题,如图:

Openfire部署源码到idea_2018-02-08 16:36:27_第10张图片
image

配置好后,再进行ant编译,即3.3

3.6编译完成后,进行应用程序配置,说明:openfire虽然是一个web程序,但本身是其实一个application程序,只是内部使用jetty容器来实现的。

操作如下:

image
Openfire部署源码到idea_2018-02-08 16:36:27_第11张图片
image
Openfire部署源码到idea_2018-02-08 16:36:27_第12张图片
image

说明:VM Options下配置的openfire源码下的target目录,是源码经过Ant编译之后才会产生的目录,如果没有进行Ant编译,则不会出现这个目录

3.7配置完成后,启动:

Openfire部署源码到idea_2018-02-08 16:36:27_第13张图片
image

然后,问题来了,一个一个解决:

第一个问题:

image

这是由于tinder.jar包冲突导致,解决方法,删除rayo插件下的tinder.jar包,位于:src/plugins/rayo/lib中,这应该就是网上说开始导入时,去掉rayo这个插件的原因。

Openfire部署源码到idea_2018-02-08 16:36:27_第14张图片
image

删除后再进行启动:可能会出现如下错误:

image

这是由于openfire本身没有带ant.jar包,导致,而idea也不会像eclipse一样自动找ant.jar包,所以我们需要手动导入,解决方法如下:

ant.jar包,去网上下载一个,或直接使用idea自带的ant.jar包,如:

Openfire部署源码到idea_2018-02-08 16:36:27_第15张图片
image

将ant.jar放到openfire的lib/ant文件夹中,并引用

Openfire部署源码到idea_2018-02-08 16:36:27_第16张图片
image
Openfire部署源码到idea_2018-02-08 16:36:27_第17张图片
image

顺便清理一下tinder.jar的引用

Openfire部署源码到idea_2018-02-08 16:36:27_第18张图片
image

并将openfire引用ant依赖

Openfire部署源码到idea_2018-02-08 16:36:27_第19张图片
image
Openfire部署源码到idea_2018-02-08 16:36:27_第20张图片
image

完成之后,再启动,会出现一个空指针异常(这个异常目前还不知道如何解决,但不影响使用,后面有时间再慢慢研究吧),但是监听程序启动正常,于是进行访问但出现这样的错误:

Openfire部署源码到idea_2018-02-08 16:36:27_第21张图片
image

这也是由于rayo插件下的javax.el-api-2.2.4.jar包冲突引起(PS:好想念maven),删掉这个包,同时清理依赖:

Openfire部署源码到idea_2018-02-08 16:36:27_第22张图片
image
Openfire部署源码到idea_2018-02-08 16:36:27_第23张图片
image

删掉之后,再启动,访问:出现这样的错误:

Openfire部署源码到idea_2018-02-08 16:36:27_第24张图片
image

这是配置文件问题,解决方法为:

将openfire中的i18n中的所有文件:D:\develop\workspace_idea\openfire\resources\i18n

和admin-sidebar.xml文件:D:\develop\workspace_idea\openfire\src\resources\jar\admin-sidebar.xml

把这些文件全部复制到这里

Openfire部署源码到idea_2018-02-08 16:36:27_第25张图片
image

然后再进行启动,访问成功!至此,源码部署工作完成,如图:

Openfire部署源码到idea_2018-02-08 16:36:27_第26张图片
image

最后存在的一个问题,当部署成功之后,启动依然出现如下 空指针异常,这个异常目前也没造成什么影响,但是具体产生的原因和解决方法,希望有研究openfire的大神们能指导一下

Openfire部署源码到idea_2018-02-08 16:36:27_第27张图片
image

以上部署过程,个人亲测通过,但不保证所有人都可以部署成功,毕竟不同的环境,结果可能大不同!

希望这篇文章能帮助到大家

你可能感兴趣的:(Openfire部署源码到idea_2018-02-08 16:36:27)