public static String[] initializeApplication(String[] args) {
      StackTraceElement[] elements = Thread.currentThread().getStackTrace();
      String programName = "";
      String packageName = null;
      for (int i = 0; i < elements.length && StringUtils.isNullOrBlank(programName); i++) {
         String className = elements[i].getClassName();
         if (!className.equals(Hermes.class.getName()) && !className.startsWith("java")) {
            int idx = className.lastIndexOf('.');
            programName = className.substring(idx + 1);
            packageName = className.substring(0, idx);
         }
      }
      return initializeApplication(programName, args, packageName);
   }
public static String [ ] initializeApplication ( String [ ] args ) { StackTraceElement [ ] elements = Thread . currentThread ( ) . getStackTrace ( ) ; String programName = "" ; String packageName = null ; for ( int i = 0 ; i < elements . length && StringUtils . isNullOrBlank ( programName ) ; i ++ ) { String className = elements [ i ] . getClassName ( ) ; if ( ! className . equals ( Hermes . class . getName ( ) ) && ! className . startsWith ( "java" ) ) { int idx = className . lastIndexOf ( '.' ) ; programName = className . substring ( idx + 1 ) ; packageName = className . substring ( 0 , idx ) ; } } return initializeApplication ( programName , args , packageName ) ; }
Initializes an application using Hermes with the given command line arguments. Determines the program name from
the calling class and also any config package associated with the calling class. Note: that the hermes package is
always loaded.

@param args the command line arguments
@return the non-named command line arguments