All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nirvana.support.services.AppBootstrap Maven / Gradle / Ivy

// Copyright 2014 Jun Tsai. All rights reserved.
// site: http://www.ganshane.com
package nirvana.support.services;

import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;

/**
 * application bootstrap
 */
public class AppBootstrap {
    protected static void start(String mainClassName,String[] args) throws Exception{
        //get server home
        String serverHome = System.getProperty("server.home", "support");
        String LIB=serverHome+File.separator+"lib";

        List urls = new ArrayList();
        File [] files = new File(LIB).listFiles();

        if(files != null){
            for (File f : files) {
                urls.add(f.toURI().toURL());
            }
        }
        // feed your URLs to a URLClassLoader!
        ClassLoader classloader = new URLClassLoader(
                urls.toArray(new URL[urls.size()]),
                ClassLoader.getSystemClassLoader().getParent());

        // well-behaved Java packages work relative to the
        // context classloader.  Others don't (like commons-logging)
        Thread.currentThread().setContextClassLoader(classloader);

        // relative to that classloader, find the main class
        // you want to bootstrap, which is the first cmd line arg
        Class mainClass = classloader.loadClass(mainClassName);
        Method main = mainClass.getMethod("main",
                new Class[]{args.getClass()});

        main.invoke(null, new Object[] { args });
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy