将4.2.4版本的openfire源码导入到IDEA中
最近在搞安卓项目的旧聊天模块,把asmack库升级到smack4.2.4版本库。打算利用smack在4.1.0版本之后实现的XEP-0198协议来解决丢消息的问题。
在导入openfire源码到IDEA中的时候也遇到了一些问题,现在写个文章记录一下。希望可以帮到有需要的朋友
本人着重参考参考文章,写这篇文章只是为了把过程记录下来,并且把参考文章中没有遇到的几个问题解决办法也记录下来。
下载源码
这是openfire 4.2.4版本的源码 下载地址。下载后解压到自己喜欢的路径。我解压到该目录下

使用IDEA导入源码


然后一路next就好了,不需要去管其他事情
编译源码

编译时候会提示没有jdk,按下图配置。



配置服务器configuration


其中VM options是项目编译以后才生成的。
解决报错
编译以后,运行项目会报几个错。如下


删除该jar包,需要在项目依赖中修改下配置,后面还有需要添加的jar包,待会一起配置



上图的错误,如图修改S2STestService.java类代码即可。
下面是依赖ant.jar包,我的jar包是直接从IDEA的安装目录下拷贝出来的,路径在D:\Program Files\JetBrains\IntelliJ IDEA 2017.2.6\lib\ant\lib。这个视个人安装路径而定




启动openfire服务器
解决完上述问题以后,如果openfire服务器已经启动占用端口了,记得在IDEA中关闭已经启动的程序。重新启动,在服务器输入127.0.01.1:9090
此时,还有几个错误需要解决。

上面这个报错只需要删除如下图片的jar包,在Project配置里面修改一下配置就可以了。

下面还有一个报错是

需要复制源码中的路径添加到classPath里面去



如上图,把i18n中的所有properties文件和admin-sidebar.xml文件复制到上图路径中去。
关闭已经启动的服务器,重新启动在控制台还有报错

这个时候只需要下载一个1.2.12版本以上的log4j的jar包,替换rayo里面lo4j.jar包就可以了。log4j下载地址
总结
到了现在,openfire源码应该算是在IDEA导入成功,可以打包部署到本地了。如果有其它问题大家可以根据控制台输出解决。