public final int execute(String[] args){
		String arguments = StringUtils.join(args, ' ');
		StrTokenizer tokens = new StrTokenizer(arguments);

		String arg = tokens.nextToken();
		int ret = 0;

		if(arg==null || "-?".equals(arg) || "-h".equals(arg) || "--help".equals(arg)){
			//First help: no arguments or -? or --help -> print usage and exit(0)
			this.printUsage();
			return 0;
		}
		else if("-v".equals(arg) || "--version".equals(arg)){
			System.out.println(this.appName + " - " + ExecS.APP_VERSION);
			System.out.println();
		}
		else if("-l".equals(arg) || "--list".equals(arg)){
			//Second list: if -l or --list -> trigger search and exit(0)
			CF cf = new CF()
				.setJarFilter((ArrayUtils.contains(args, "-j"))?this.jarFilter:null)
				.setPkgFilter((ArrayUtils.contains(args, "-p"))?this.packageFilter:null);
			this.addAllApplications(cf.getSubclasses(ExecS_Application.class));
			this.printList();
			return 0;
		}
		else{
			Object svc = null;
			if(this.classmap.containsKey(arg)){
				try{
					svc = this.classmap.get(arg).newInstance();
				}
				catch(IllegalAccessException | InstantiationException iex){
					System.err.println(this.appName + ": tried to execute <" + args[0] + "> by registered name -> exception: " + iex.getMessage());
//					iex.printStackTrace();
					ret = -99;
				}
			}
			else{
				try{
					Class<?> c = Class.forName(arg);
					svc = c.newInstance();
				}
				catch(ClassNotFoundException | IllegalAccessException | InstantiationException ex){
					System.err.println(this.appName + ": tried to execute <" + args[0] + "> as class name -> exception: " + ex.getMessage());
//					ex.printStackTrace();
					ret = -99;
				}
			}
			ret = this.executeApplication(svc, args, arg);
		}

		if(ret==-99){
			//now we are in trouble, nothing we could do worked, so print that and quit
			System.err.println(this.appName + ": no application could be started and nothing else could be done, try '-?' or '--help' for help");
			System.err.println();
		}
		return ret;
	}
public final int execute ( String [ ] args ) { String arguments = StringUtils . join ( args , ' ' ) ; StrTokenizer tokens = new StrTokenizer ( arguments ) ; String arg = tokens . nextToken ( ) ; int ret = 0 ; if ( arg == null || "-?" . equals ( arg ) || "-h" . equals ( arg ) || "--help" . equals ( arg ) ) { this . printUsage ( ) ; return 0 ; } else if ( "-v" . equals ( arg ) || "--version" . equals ( arg ) ) { System . out . println ( this . appName + " - " + ExecS . APP_VERSION ) ; System . out . println ( ) ; } else if ( "-l" . equals ( arg ) || "--list" . equals ( arg ) ) { CF cf = new CF ( ) . setJarFilter ( ( ArrayUtils . contains ( args , "-j" ) ) ? this . jarFilter : null ) . setPkgFilter ( ( ArrayUtils . contains ( args , "-p" ) ) ? this . packageFilter : null ) ; this . addAllApplications ( cf . getSubclasses ( ExecS_Application . class ) ) ; this . printList ( ) ; return 0 ; } else { Object svc = null ; if ( this . classmap . containsKey ( arg ) ) { try { svc = this . classmap . get ( arg ) . newInstance ( ) ; } catch ( IllegalAccessException | InstantiationException iex ) { System . err . println ( this . appName + ": tried to execute <" + args [ 0 ] + "> by registered name -> exception: " + iex . getMessage ( ) ) ; ret = - 99 ; } } else { try { Class < ? > c = Class . forName ( arg ) ; svc = c . newInstance ( ) ; } catch ( ClassNotFoundException | IllegalAccessException | InstantiationException ex ) { System . err . println ( this . appName + ": tried to execute <" + args [ 0 ] + "> as class name -> exception: " + ex . getMessage ( ) ) ; ret = - 99 ; } } ret = this . executeApplication ( svc , args , arg ) ; } if ( ret == - 99 ) { System . err . println ( this . appName + ": no application could be started and nothing else could be done, try '-?' or '--help' for help" ) ; System . err . println ( ) ; } return ret ; }
Main method
@param args command line arguments
@return 0 on success, -1 on error with message on STDERR