最近公司项目要使用openfire,并对源码做一些修改,使用的openfire版本为官网目前最新版本4.2.3,网上资料较少,踩了很多坑,特此记录。

1.下载源码

http://www.igniterealtime.org/downloads/source.jsp

2.使用idea导入源码

File-New-Project from Existing Sources 导入解压后的源码

一路next

导入后的目录结构如下

设置Project SDK

打开File-Project Structure(本人使用的jdk1.8)

3.使用ant编译源码

  a)打开右侧ant build菜单,点击+号,选择openfire-src-build下的build.xml文件

  b)点击ant build菜单蓝色按钮(第四个)过滤

  c)选择openfire后点击run按钮

4.配置运行参数

  a)选择application

  b)设置一些启动参数如图所示

  c)启动(注意:此步会报一些错,下面一一解决)

Q:Error:java: 无效的源发行版: 1.9

A:此处选择8

Q:Error:(571, 21) java: 无法访问org.apache.tools.ant.Task

  找不到org.apache.tools.ant.Task的类文件

A:缺少ant包

   1.将idea路径下或者自己下载的ant.jar复制到openfire_src>build->ib>ant目录和openfire_src>build->ib>merge目录下

    2.打开project structure,选择libraries下的ant和merge,将刚才的ant.jar添加进去

     3.选择project structure-modules-tools模块,加入ant依赖

Q:启动成功,打开控制台页面报

HTTP ERROR 404

Problem accessing /login.jsp. Reason:

    /login.jsp

Powered by Jetty://

A:在web>WEB-INF>web.xml中添加

<jsp-config>    <taglib>        <taglib-uri>admin</taglib-uri>        <taglib-location>/WEB-INF/admin.tld</taglib-location>    </taglib></jsp-config>然后使用ant重新编译后启动

Q:再次启动后报500错误

HTTP ERROR 500

Problem accessing /setup/index.jsp. Reason:

    Server Error

Caused by:

java.lang.NullPointerExceptionat org.jivesoftware.admin.AdminConsole.getAppName(AdminConsole.java:105)at org.jivesoftware.openfire.admin.decorators.setup_jsp._jspService(setup_jsp.java:192)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:595)at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)at org.eclipse.jetty.server.Dispatcher.include(Dispatcher.java:115)at com.opensymphony.module.sitemesh.filter.PageFilter.applyDecorator(PageFilter.java:156)at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:59)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:215)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)at org.eclipse.jetty.server.Server.handle(Server.java:499)at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)at java.lang.Thread.run(Thread.java:748)A:缺少配置文件  1.将D:\IntelliJ IDEA 2017.3.3\workspace\openfire_src\src\resources\jar下的admin-sidebar.xml复制到D:\IntelliJ IDEA 2017.3.3\workspace\openfire_src\out\production\openfire_src  2.将D:\IntelliJ IDEA 2017.3.3\workspace\openfire_src\src\i18n下的所有文件复制到D:\IntelliJ IDEA 2017.3.3\workspace\openfire_src\out\production\openfire_src

成功进入控制台!!!
 

转载于:https://www.cnblogs.com/lullaby/p/8980534.html

openfire(一):使用idea编译openfire4.2.3源码相关推荐

  1. 编译hadoop2.2.0源码时报错

    编译hadoop2.2.0源码时, mvn install -DskipTests 报错: [ERROR] COMPILATION ERROR : [INFO] ------------------- ...

  2. ubuntu编译并调试OpenJDK8源码实践

    最近打算研究一下 jvm 相关的知识,所以想编译 OpenJDK 的源码,一直在Mac上面编译,但是总是出现莫名其妙的error,还找不到有效的解决方式,所以还是进入 Ubuntu 下面进行编译,虽然 ...

  3. Ubuntu 12.04(64位)下载并编译 Android 4.1 源码[只有2条命令]

    2019独角兽企业重金招聘Python工程师标准>>> Ubuntu 12.04(64位)下载并编译 Android 4.1 源码[只有2条命令] ================= ...

  4. ubuntu编译内核_鸿蒙源码下载并编译

    第一章 下载源码并编译 1.1 在Ubuntu中安装开发环境 如果你是从头看文档,并且按照文档操作,那么你已经按照<5.2 安装Ubuntu软件>下载并运行了这个脚本:Configurin ...

  5. idea 编译spring_《Spring源码解析(二)》构建 Spring5 源码工程,开启研读Spring源码之路...

    Spring5 源码下载注意事项 首先你的 JDK 需要升级到 1.8 以上.Spring3.0 开始,Spring 源码采用 github 托管,不再提供官网下载 链接.这里不做过多赘述,大家可自行 ...

  6. mysql 5.7 源码编译安装_mysql-5.7.*源码编译安装

    mysql-5.7.*源码编译安装 系统安装条件 官方文档说明:http://dev.mysql.com/doc/refman/5.7/en/source-installation.html 1> ...

  7. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...

  8. 编译FriendlyDesktop的Uboot源码、内核,修改开机图片logo

    1. 安装依赖包 参照官网wiki教程 - 12章节:Nanopi 教程wiki 安装以下依赖包. sudo apt-get -y install bison g++-multilib git gpe ...

  9. 【网络通信 -- 直播】OBS -- 基于 Visual Studio 2019 + Qt 5.15.2 编译调试 OBS studio 源码

    [网络通信 -- 直播]OBS -- 基于 Visual Studio 2019 + Qt 5.15.2 编译调试 OBS studio 源码 [1]OBS 代码获取 github : git clo ...

最新文章

  1. pythonpass函数_有的python内置函数怎么就一个pass?
  2. 步步为营-68-asp.net简单练习(get set)
  3. python里面temp是啥-Python模块学习:tempfile 临时文件(夹)操作
  4. c++ file operation (reference 5)
  5. sockaddr数据结构
  6. PHP常用 header函数设置HTTP头部示例
  7. C#using static
  8. 你只是看起来很努力_我的方法在这方面看起来很大吗?
  9. hdu 6026 Deleting Edges(最短路计数)
  10. c++系统给baijq分配了空间
  11. Oracle Segments可以跨多个data files吗?
  12. Windows 7系统快捷键汇总
  13. 我38岁,从外企技术高管到失业在家,只因为做错了这件事
  14. python2.7输出语句,输入和输出 - 廖雪峰 Python 2.7 中文教程
  15. python unrar问题_Python提取/unrar RAR文件错误
  16. 快递100 快递公司编码-标准国际
  17. 程序员增加收入的几种方法
  18. 关于微软虚拟机更新后密码问题
  19. 第六章 深入理解Magento – 高级Magento模型(EAV)
  20. Html 后端了解基础

热门文章

  1. 内核中引发bug并打印信息
  2. 欢迎使用CSDN-markdown编辑器132133
  3. DCASE2013挑战赛介绍
  4. 心灵之光、思想之树:推荐《作家曰》
  5. 为知笔记:优秀国产知识管理软件的使用心得
  6. C++之RAII机制
  7. android 清空所有控件,如何清空android ListView控件的内容
  8. python中count的作用_python中内置的.count是什么?
  9. script标签里src为php,如何获取指定为script标记的'src'的文件的内容?
  10. mysql第四项_mysql数据库的基本介绍与操作(第四篇-mysql索引篇)