openfire二次开发后打包部署程序在windows平台

时间:2019-01-18
本文章向大家介绍openfire二次开发后打包部署程序在windows平台,主要包括openfire二次开发后打包部署程序在windows平台使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

openfire二次开发后打包部署,没有前人带路真的是个踩坑之旅啊,现在记录一下我遇到的问题。这里不介绍openfire源码的二次开发的配置,关于openfire源码的二次开发的配置我也遇到了很多问题,之前没有记录下来。其实我也还没有完全弄明白,我会在之后补一篇关于“openfire源码的二次开发的配置”的解决方法,不一定全面、但肯定都是我真切遇到的。

 

我们这里打包成jar文件,不需要exe4j,install4j等工具。先讲如何打包,再讲打包过程中遇到的问题,以及解决办法。

一、打包成jar文件

1、在myeclipse(eclipse)的Package Explorer中中右键项目->Export->java->Runable java jar->next->Launch configration中选择运行的ServerStarter - openfire_src

注释:就是程序运行的入口就是 main函数所在的类,平时在myeclipse中运行的时候运行openfire_sre下的src/java下的包org.jivesoftwar.eopenfire.starter下的ServerStarter.java,即可运行程序。

2、Export Destination就是最终jar文件的输出目录,选择好后就可以点击next,这里会报出两至三个警告,警告可以不用理会,直接“OK”即可。我这里导出来StartOpenfire.jar文件,那么我们如何运行它呢,你可以直接打开cmd命令,进入该目录后输入

java -jar StartOpenfire.jar

为了方便使用,我这里新建一个 StartOpenfire.txt文件,输入“java -jar StartOpenfire.jar”。保存。重命名为StartOpenfire.bat,这样下次就可以直接双击该bat文件运行openfire了,如果你这里运行没有错误,那你太幸运了,这里就完成了打包,。

但是在运行这个jar文件的时候我遇到了很多问题。

问题0:

我们通常打包jar的时候,通常会在ant中先clean项目,然后点击openfire(default),然后导出,但是我发现,凡是clean后,即使不打包,直接在myeclipse中运行项目,控制台会显示“..监控端口:9090,9091..”,然后打开浏览器:127.0.0.1:9090

会发现不是进入登录界面,而是按照界面,什么鬼,不是安装了无数遍了吗,为什么还有安装,查询发现,target/openfire/openfire.xml被清除了。因为clean会删除target和work文件夹,第一次我的做法是clean之前将原来的openfire.xml文件拷贝出来,点击clean ,点击openfire(default),然后将原来的openfire.xml覆盖新的openfire.xml。后来询问有人数:"把配置好的openfire文件放到 src/conf/ 目录、然后打包之后 、他会给你copy进去 "。

问题1:

Could not locate home
java.io.FileNotFoundException
        at org.jivesoftware.openfire.XMPPServer.locateOpenfire(XMPPServer.java:913)
.
.
.

我们可以判断XMPPServer文件有问题,因为这里面有个相对路径,你需要把它改成绝对路径

打开文件openfire_src->src/java->org.jivesoftware.openfire(包名)->XMPPServer.java文件,其中有一段

if (openfireHome == null) {  
           try {  
               openfireHome = verifyHome("..", jiveConfigName).getCanonicalFile();  
           }  
           catch (FileNotFoundException fe) {  
               // Ignore.  
           }  
           catch (IOException ie) {  
               // Ignore.  
           }  
       }  

看到其中两个点点没有,将他替换成(根据自己的目录来)

openfireHome = verifyHome("D:\\openfire_src\\openfire_src\\target\\openfire", jiveConfigName).getCanonicalFile();

问题2:

ERROR AdminConsole:248 - Failed to load admin-sidebar.xml file from Openfire classes - admin console will not work correctly.
java.lang.NullPointerException
at org.jivesoftware.admin.AdminConsole.getAppName(AdminConsole.java:137)
at org.jivesoftware.openfire.admin.decorators.setup_jsp._jspService(setup_jsp.java:177)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:480)

这个问题在这里应该不会遇到,因为这个问题出现会在openfire配置的过程中出现,你应该会提前把它解决,不过还是说一下吧。

在运行配置(openfire_sre下的src/java下的包org.jivesoftwar.eopenfire.starter下的ServerStarter.java右键run as ->run configrations)中的classpath加入下面红框标的文件夹

 

添加方式:选中 User Entities->右侧的advanced->and Folders选中jar路径图中有。