Openfire 开发环境搭建时容易出现Couldnotlocatehome 异常,主要由XMPPServer.java中以下代码引起:
private void initialize() FileNotFoundException{ locateOpenfire(); ...... } private void locateOpenfire() throws FileNotFoundException{ 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. } } // 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. } } ..... }
这里主要是根据系统配置来寻找Openfire的启始目录。
如查报以上错误则:
1.检查是否有用ant 编译Openfire,确保所有编译结果都在源码路径下target\openfire 这个目录。
2.检查Debug Configuration /Run Configuration 的配置中 Arguments-->VM arguments 中配置值为 -DopenfireHome=${workspace_loc:openfire_src/target/openfire},只有配置了这个参数,在System.getProperty("openfireHome") 时才不会出现null的情况。