org.codehaus.plexus.classworlds.launcher
Class Launcher

java.lang.Object
  extended byorg.codehaus.plexus.classworlds.launcher.Launcher
Direct Known Subclasses:
Launcher

public class Launcher
extends java.lang.Object

Command-line invokable application launcher.

This launcher class assists in the creation of classloaders and ClassRealms from a configuration file and the launching of the application's main method from the correct class loaded through the correct classloader.

The path to the configuration file is specified using the classworlds.conf system property, typically specified using the -D switch to java.

Version:
$Id: Launcher.java 8299 2009-08-05 16:04:32Z bentmann $
Author:
bob mcwhirter

Field Summary
protected static java.lang.String CLASSWORLDS_CONF
           
protected  java.lang.String mainClassName
           
protected  java.lang.String mainRealmName
           
protected  java.lang.ClassLoader systemClassLoader
           
protected static java.lang.String UBERJAR_CONF_DIR
           
protected  ClassWorld world
           
 
Constructor Summary
Launcher()
           
 
Method Summary
 void configure(java.io.InputStream is)
          Configure from a file.
protected  java.lang.reflect.Method getEnhancedMainMethod()
          Retrieve the enhanced main entry method.
 int getExitCode()
           
 java.lang.Class getMainClass()
          Retrieve the main entry class.
 java.lang.String getMainClassName()
           
protected  java.lang.reflect.Method getMainMethod()
          Retrieve the main entry method.
 ClassRealm getMainRealm()
          Retrieve the main entry realm.
 java.lang.String getMainRealmName()
           
 java.lang.ClassLoader getSystemClassLoader()
           
 ClassWorld getWorld()
           
 void launch(java.lang.String[] args)
          Launch the application.
protected  void launchEnhanced(java.lang.String[] args)
          Attempt to launch the application through the enhanced main method.
protected  void launchStandard(java.lang.String[] args)
          Attempt to launch the application through the standard main method.
static void main(java.lang.String[] args)
          Launch the launcher from the command line.
static int mainWithExitCode(java.lang.String[] args)
          Launch the launcher.
 void setAppMain(java.lang.String mainClassName, java.lang.String mainRealmName)
           
 void setSystemClassLoader(java.lang.ClassLoader loader)
           
 void setWorld(ClassWorld world)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASSWORLDS_CONF

protected static final java.lang.String CLASSWORLDS_CONF
See Also:
Constant Field Values

UBERJAR_CONF_DIR

protected static final java.lang.String UBERJAR_CONF_DIR
See Also:
Constant Field Values

systemClassLoader

protected java.lang.ClassLoader systemClassLoader

mainClassName

protected java.lang.String mainClassName

mainRealmName

protected java.lang.String mainRealmName

world

protected ClassWorld world
Constructor Detail

Launcher

public Launcher()
Method Detail

setSystemClassLoader

public void setSystemClassLoader(java.lang.ClassLoader loader)

getSystemClassLoader

public java.lang.ClassLoader getSystemClassLoader()

getExitCode

public int getExitCode()

setAppMain

public void setAppMain(java.lang.String mainClassName,
                       java.lang.String mainRealmName)

getMainRealmName

public java.lang.String getMainRealmName()

getMainClassName

public java.lang.String getMainClassName()

setWorld

public void setWorld(ClassWorld world)

getWorld

public ClassWorld getWorld()

configure

public void configure(java.io.InputStream is)
               throws java.io.IOException,
                      ConfigurationException,
                      DuplicateRealmException,
                      NoSuchRealmException
Configure from a file.

Parameters:
is - The config input stream.
Throws:
java.io.IOException - If an error occurs reading the config file.
java.net.MalformedURLException - If the config file contains invalid URLs.
ConfigurationException - If the config file is corrupt.
DuplicateRealmException - If the config file defines two realms with the same id.
NoSuchRealmException - If the config file defines a main entry point in a non-existent realm.

getMainClass

public java.lang.Class getMainClass()
                             throws java.lang.ClassNotFoundException,
                                    NoSuchRealmException
Retrieve the main entry class.

Returns:
The main entry class.
Throws:
java.lang.ClassNotFoundException - If the class cannot be found.
NoSuchRealmException - If the specified main entry realm does not exist.

getMainRealm

public ClassRealm getMainRealm()
                        throws NoSuchRealmException
Retrieve the main entry realm.

Returns:
The main entry realm.
Throws:
NoSuchRealmException - If the specified main entry realm does not exist.

getEnhancedMainMethod

protected java.lang.reflect.Method getEnhancedMainMethod()
                                                  throws java.lang.ClassNotFoundException,
                                                         java.lang.NoSuchMethodException,
                                                         NoSuchRealmException
Retrieve the enhanced main entry method.

Returns:
The enhanced main entry method.
Throws:
java.lang.ClassNotFoundException - If the main entry class cannot be found.
java.lang.NoSuchMethodException - If the main entry method cannot be found.
NoSuchRealmException - If the main entry realm cannot be found.

getMainMethod

protected java.lang.reflect.Method getMainMethod()
                                          throws java.lang.ClassNotFoundException,
                                                 java.lang.NoSuchMethodException,
                                                 NoSuchRealmException
Retrieve the main entry method.

Returns:
The main entry method.
Throws:
java.lang.ClassNotFoundException - If the main entry class cannot be found.
java.lang.NoSuchMethodException - If the main entry method cannot be found.
NoSuchRealmException - If the main entry realm cannot be found.

launch

public void launch(java.lang.String[] args)
            throws java.lang.ClassNotFoundException,
                   java.lang.IllegalAccessException,
                   java.lang.reflect.InvocationTargetException,
                   java.lang.NoSuchMethodException,
                   NoSuchRealmException
Launch the application.

Parameters:
args - The application args.
Throws:
java.lang.ClassNotFoundException - If the main entry class cannot be found.
java.lang.IllegalAccessException - If the method cannot be accessed.
java.lang.reflect.InvocationTargetException - If the target of the invokation is invalid.
java.lang.NoSuchMethodException - If the main entry method cannot be found.
NoSuchRealmException - If the main entry realm cannot be found.

launchEnhanced

protected void launchEnhanced(java.lang.String[] args)
                       throws java.lang.ClassNotFoundException,
                              java.lang.IllegalAccessException,
                              java.lang.reflect.InvocationTargetException,
                              java.lang.NoSuchMethodException,
                              NoSuchRealmException
Attempt to launch the application through the enhanced main method.

This will seek a method with the exact signature of:

  public static void main(String[] args, ClassWorld world)
  

Parameters:
args - The application args.
Throws:
java.lang.ClassNotFoundException - If the main entry class cannot be found.
java.lang.IllegalAccessException - If the method cannot be accessed.
java.lang.reflect.InvocationTargetException - If the target of the invokation is invalid.
java.lang.NoSuchMethodException - If the main entry method cannot be found.
NoSuchRealmException - If the main entry realm cannot be found.

launchStandard

protected void launchStandard(java.lang.String[] args)
                       throws java.lang.ClassNotFoundException,
                              java.lang.IllegalAccessException,
                              java.lang.reflect.InvocationTargetException,
                              java.lang.NoSuchMethodException,
                              NoSuchRealmException
Attempt to launch the application through the standard main method.

This will seek a method with the exact signature of:

  public static void main(String[] args)
  

Parameters:
args - The application args.
Throws:
java.lang.ClassNotFoundException - If the main entry class cannot be found.
java.lang.IllegalAccessException - If the method cannot be accessed.
java.lang.reflect.InvocationTargetException - If the target of the invokation is invalid.
java.lang.NoSuchMethodException - If the main entry method cannot be found.
NoSuchRealmException - If the main entry realm cannot be found.

main

public static void main(java.lang.String[] args)
Launch the launcher from the command line. Will exit using System.exit with an exit code of 0 for success, 100 if there was an unknown exception, or some other code for an application error.

Parameters:
args - The application command-line arguments.

mainWithExitCode

public static int mainWithExitCode(java.lang.String[] args)
                            throws java.lang.Exception
Launch the launcher.

Parameters:
args - The application command-line arguments.
Returns:
an integer exit code
Throws:
java.lang.Exception - If an error occurs.


Copyright © 2002-2010 Codehaus. All Rights Reserved.