openfire源码 部署 常见错误

一.部署

1  解压openfire源码放到workspace下.建立一个java project,名字与解压后源码文件夹名字一样,这样就可以把openfire源码导入到eclipse中
2. 使用ant进行编译。
   在openfire项目导入进来之后,点击
   Window -> Show View -> Ant
   然后就会显示出Ant的窗口,在Ant 视图中,单击右键,在弹出的快捷菜单中选择Add Buildfiles
   在弹出的对话框中,展开openfire_srcild文件夹,选择build目录下的build.xml
   接下来双击执行openfire[default]   (带一个三角符号的那个)
  在控制台中显示“BUILD SUCCESSFUL” 那么就表示编译成功,

3. 设置启动项目
  点击openfire_src项目,在菜单栏中选择Run->Open Run Dialog (Or  Run->Run Configurations)
   弹出一个对话框,在左侧菜单中右键点击Java Application,选择New创建启动配置
  在Run窗口的Main选项卡中, 修改最上面Name文本框中的值,改成包含要启动的类的工程名openfire_src
  (没什么用,就是一个标识,随便起名字。)
   在Run窗口的Main选项卡中,
  project框中填写:openfire_src
  Main class 填写:org.jivesoftware.openfire.starter.ServerStarter
  点击Apply应用。
  点击进入Arguments选项卡,在上面那个框(VM arguments:)中填写
  -DopenfireHome="${workspace_loc:openfire_src}/target/openfire"
   其中${workspace_loc:openfire_src} 中的 openfire_src 要根据你的项目名来进行同步修改。
  点击Apply应用。
  点击进入Classpath选项卡,选中User Entries,然后点击右侧的Advanced按钮,会弹出一个小框,选择Add Folders,单击OK。
选择 openfire_src\src\i18n点OK 按钮将这个文件夹加入到Classpath选项卡中

选择 openfire_src\src\resources 目录也加到 Classpath选项卡中

点击Apply应用。

4.点击进入Common选项卡中,勾选Run复选框。

点击Apply应用。在进行这些配置之后,就算是基本完工了。

可以直接点击配置框最下方的Run按钮,或者单击菜单栏Run->Run开始跑程序。 

二.错误解决1

导入项目后一直报错原因:缺少jar包解决办法:

将openfire目录下buildb目录下的所有包都通过JAVA BUILDPATH导入到项目


中来,这个时候可能还缺包,接着导入这几个包。导完后可能还缺,缺少的包在openfire目录下的src/plugins中,如果能找到报错的类在哪个包中就直接加进来,否则的话把所有的包都导进来吧。都导完以后就不报错了

2.java.lang.NullPointerException

       atorg.jivesoftware.admin.AdminConsole.getAppName(AdminConsole.java:122)

       atorg.jivesoftware.openfire.admin.decorators.setup_jsp._jspService(setup_jsp.java:168)

       atorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

       atjavax.servlet.http.HttpServlet.service(HttpServlet.java:820)

       atorg.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)

       atorg.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)

       atorg.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

       atorg.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)

       atorg.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)

       atorg.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405

       atorg.mortbay.jetty.servlet.Dispatcher.include(Dispatcher.java:192)

       atcom.opensymphony.module.sitemesh.filter.PageFilter.applyDecorator(PageFilter.java:156)

       atcom.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:59)

       atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

       atorg.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:66)

       atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

       atorg.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:42)

       atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

       atorg.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:70)

       atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

       atorg.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:99)

       atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

       atorg.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)

       atorg.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

       atorg.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)

       atorg.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)

       atorg.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)

       atorg.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)

       atorg.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

       atorg.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

       atorg.mortbay.jetty.Server.handle(Server.java:324)

       atorg.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)

       atorg.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)

       atorg.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)

       atorg.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)

       atorg.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)

       atorg.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)

       atorg.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

Poweredby Jetty://

这时因为是文件路径所导致的问题,需要将admin-sidebar.xml和openfire_i18n_en.properties这2个文件直接放在openfire\bin目录下即可解决这个问题。

如果再次出现,这样的问题,就需要将openfire目录下的你把openfire下的work 和target文件都删除了,然后重新发布一个。因为web的内容不会自动更新的,只有.class会自动更新。

3.如果文件路径配置不正确(即Openfire的Home没有设定或者设置不正确),就可能在运行时出现如下所示的问题: 
Could not locate home 
java.io.FileNotFoundException...... 

ERROR 12114 [Jive-ERR] (): 
java.io.FileNotFoundException: XML properties file does not exist: openfire.xml........ 
在XMPPServer类中有一个locateOpenfire方法,这个方法就是设置openfireHome属性。 
第1部分的代码如下: 
String jiveConfigName = "conf" + File.separator +"openfire.xml"; 
// First, try to load it openfireHome as a system property. 
if (openfireHome == null) { 
String homeProperty = System.getProperty("openfireHome"); 
try { 
if (homeProperty != null) { 
openfireHome = verifyHome(homeProperty, jiveConfigName); 


catch (FileNotFoundException fe) { 
// Ignore. 


是在环境变量设置了Openfire的Home的情况下寻找openfire.xml文件 

你可以更改第二部分的代码让Openfire找到Home: 
// 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("C:\\Program Files\\Openfire",jiveConfigName).getCanonicalFile(); 

catch (FileNotFoundException fe) { 
// Ignore. 

catch (IOException ie) { 
// Ignore. 


这部分默认是找当前文件路径,你可以修改它为你安装openfire的路径,这样问题就可以解决了。

或者,代码里加一行如果获取到的地址为空的话自己手动赋值进去


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值