openfire(一):使用idea编译openfire4.2.3源码
最近公司项目要使用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源码相关推荐
- 编译hadoop2.2.0源码时报错
编译hadoop2.2.0源码时, mvn install -DskipTests 报错: [ERROR] COMPILATION ERROR : [INFO] ------------------- ...
- ubuntu编译并调试OpenJDK8源码实践
最近打算研究一下 jvm 相关的知识,所以想编译 OpenJDK 的源码,一直在Mac上面编译,但是总是出现莫名其妙的error,还找不到有效的解决方式,所以还是进入 Ubuntu 下面进行编译,虽然 ...
- Ubuntu 12.04(64位)下载并编译 Android 4.1 源码[只有2条命令]
2019独角兽企业重金招聘Python工程师标准>>> Ubuntu 12.04(64位)下载并编译 Android 4.1 源码[只有2条命令] ================= ...
- ubuntu编译内核_鸿蒙源码下载并编译
第一章 下载源码并编译 1.1 在Ubuntu中安装开发环境 如果你是从头看文档,并且按照文档操作,那么你已经按照<5.2 安装Ubuntu软件>下载并运行了这个脚本:Configurin ...
- idea 编译spring_《Spring源码解析(二)》构建 Spring5 源码工程,开启研读Spring源码之路...
Spring5 源码下载注意事项 首先你的 JDK 需要升级到 1.8 以上.Spring3.0 开始,Spring 源码采用 github 托管,不再提供官网下载 链接.这里不做过多赘述,大家可自行 ...
- mysql 5.7 源码编译安装_mysql-5.7.*源码编译安装
mysql-5.7.*源码编译安装 系统安装条件 官方文档说明:http://dev.mysql.com/doc/refman/5.7/en/source-installation.html 1> ...
- Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决
Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...
- 编译FriendlyDesktop的Uboot源码、内核,修改开机图片logo
1. 安装依赖包 参照官网wiki教程 - 12章节:Nanopi 教程wiki 安装以下依赖包. sudo apt-get -y install bison g++-multilib git gpe ...
- 【网络通信 -- 直播】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 ...
最新文章
- pythonpass函数_有的python内置函数怎么就一个pass?
- 步步为营-68-asp.net简单练习(get set)
- python里面temp是啥-Python模块学习:tempfile 临时文件(夹)操作
- c++ file operation (reference 5)
- sockaddr数据结构
- PHP常用 header函数设置HTTP头部示例
- C#using static
- 你只是看起来很努力_我的方法在这方面看起来很大吗?
- hdu 6026 Deleting Edges(最短路计数)
- c++系统给baijq分配了空间
- Oracle Segments可以跨多个data files吗?
- Windows 7系统快捷键汇总
- 我38岁,从外企技术高管到失业在家,只因为做错了这件事
- python2.7输出语句,输入和输出 - 廖雪峰 Python 2.7 中文教程
- python unrar问题_Python提取/unrar RAR文件错误
- 快递100 快递公司编码-标准国际
- 程序员增加收入的几种方法
- 关于微软虚拟机更新后密码问题
- 第六章 深入理解Magento – 高级Magento模型(EAV)
- Html 后端了解基础
热门文章
- 内核中引发bug并打印信息
- 欢迎使用CSDN-markdown编辑器132133
- DCASE2013挑战赛介绍
- 心灵之光、思想之树:推荐《作家曰》
- 为知笔记:优秀国产知识管理软件的使用心得
- C++之RAII机制
- android 清空所有控件,如何清空android ListView控件的内容
- python中count的作用_python中内置的.count是什么?
- script标签里src为php,如何获取指定为script标记的'src'的文件的内容?
- mysql第四项_mysql数据库的基本介绍与操作(第四篇-mysql索引篇)