一、下载Openfire源码
首先,访问http://www.igniterealtime.org/ 点击下载Openfire源码压缩包,进行解压,将解压后的文件放置在硬盘某处。假设我们放在D盘根目录下,然后将文件夹名称修改为openfire_src。
一、在Eclipse环境中导入Openfire源代码
目前本人发现在Eclipse中导入Openfire源码,会有两种情况,是由于Eclipse版本问题引起的,所以这里我都进行说明。
(Eclipse 3.5)操作流程:
File->New->Java Project
在弹出的New Java Project对话框中输入工程名:openfire_src
选择Create project from existing source项,单击Browe,找到之前的解压目录 openfire_src
(Eclipse 3.6)操作流程:
File->New->Java Project
取消掉default location的勾选状态,并浏览选择解压好的openfire_src目录。
以上两种方式针对不同的Eclipse,但是结果都是一样,将Openfire源码导入到Eclipse中。
二、使用ANT进行工程的编译
在openfire项目导入进来之后,点击
Window -> Show View -> Ant
然后就会显示出Ant的窗口,在Ant 视图中,单击右键,在弹出的快捷菜单中选择Add Buildfiles
在弹出的对话框中,展开openfire_src/build文件夹,选择build目录下的build.xml
接下来双击执行openfire[default] (带一个三角符号的那个)
在控制台中显示“BUILD SUCCESSFUL” 那么就表示编译成功,
PS:如果编译失败,很可能是由于JDK的原因,那么请设置一下项目的JDK,我用的是1.6版本:通过!
三、设置启动项目
点击openfire_src项目,在菜单栏中选择Run->Open Run Dialog (Or Run->Run Configurations)
弹出一个对话框,在左侧菜单中右键点击Java Application,选择New创建启动配置
1.在Run窗口的Main选项卡中, 修改最上面Name文本框中的值,改成包含要启动的类的工程名openfire_src
(没什么用,就是一个标识,随便起名字。)
2.在Run窗口的Main选项卡中,
project框中填写:openfire_src
Main class 填写:org.jivesoftware.openfire.starter.ServerStarter
点击Apply应用。
3.点击进入Arguments选项卡,在上面那个框(Program arguments:)中填写
-DopenfireHome="${workspace_loc:openfire_src}/target/openfire"
其中${workspace_loc:openfire_src} 中的 openfire_src 要根据你的项目名来进行同步修改。
点击Apply应用。
4.点击进入Classpath选项卡,选中User Entries,然后点击右侧的Advanced按钮,会弹出一个小框,选择Add Folders,单击OK。
选择 openfire_src\src\i18n点OK 按钮将这个文件夹加入到Classpath选项卡中
选择 openfire_src\src\resources\jar 目录也加到 Classpath选项卡中
点击Apply应用。
5.点击进入Common选项卡中,勾选Run复选框。
点击Apply应用。
在进行这些配置之后,就算是基本完工了。
可以直接点击配置框最下方的Run按钮,或者单击菜单栏Run->Run开始跑程序。
log4j:WARN No appenders could be found for logger (org.jivesoftware.util.Log).
log4j:WARN Please initialize the log4j system properly.
Openfire 3.7.0 [Jun 29, 2011 1:51:19 PM]
Admin console listening at http://127.0.0.1:9090
启动成功,那么在浏览器中输入http://127.0.0.1:9090测试一下吧!
四、错误处理
在配置完成后,有些同学启动项目并不会正常启动,而是会出现一些其他错误。
比如说:
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 源代码在 Eclipse 3.5.2 ...以上就是 Openfire 源代码在 Eclipse 3.5.2 中部署、编译、运行和安装的详细步骤。在整个过程中,需要注意细节处理,特别是配置文件的位置和内容,以及构建过程中的错误排查。
运行Openfire服务器,首先配置资源文件,将"/openfire_src/src/i18n"、"/openfire_src/src/resources/jar"和"/openfire_src/build/lib/dist"添加到源文件路径。然后设置Java应用程序的启动参数,指定Openfire的主类...
在将Openfire源码导入IDE(如Eclipse或IntelliJ IDEA)时,可能会遇到缺少依赖JAR包的问题,这会影响项目的正常编译和运行。本资源包含了所有缺失的JAR包,以确保开发环境的完整性和功能。 1. **关于Openfire** ...
以上步骤完成后,就可以运行Spark项目并看到Spark的启动界面,从而完成整个Spark源代码的部署和编译过程。这个过程不仅涉及到MyEclipse和Ant工具的使用,还涉及到对Java项目的配置和Java编译器的版本管理。对于有...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...