FileDocCategorySizeDatePackage
JarRunner.javaAPI DocExample1753Tue Dec 12 18:58:00 GMT 2000None

JarRunner

public class JarRunner extends Object
Runs a jar application from any url. Usage is 'java JarRunner url [args..]' where url is the url of the jar file and args is optional arguments to be passed to the application's main method.

Fields Summary
Constructors Summary
Methods Summary
private static voidfatal(java.lang.String s)

	System.err.println(s);
	System.exit(1);
    
public static voidmain(java.lang.String[] args)

	if (args.length < 1) {
	    usage();
	}
	URL url = null;
	try {
	    url = new URL(args[0]);
	} catch (MalformedURLException e) {
	    fatal("Invalid URL: " + args[0]);
	}
	// Create the class loader for the application jar file
	JarClassLoader cl = new JarClassLoader(url);
	// Get the application's main class name
	String name = null;
	try {
	    name = cl.getMainClassName();
	} catch (IOException e) {
	    System.err.println("I/O error while loading JAR file:");
	    e.printStackTrace();
	    System.exit(1);
	}
	if (name == null) {
	    fatal("Specified jar file does not contain a 'Main-Class'" +
		  " manifest attribute");
	}
	// Get arguments for the application
	String[] newArgs = new String[args.length - 1];
	System.arraycopy(args, 1, newArgs, 0, newArgs.length);
	// Invoke application's main class
	try {
	    cl.invokeClass(name, newArgs);
	} catch (ClassNotFoundException e) {
	    fatal("Class not found: " + name);
	} catch (NoSuchMethodException e) {
	    fatal("Class does not define a 'main' method: " + name);
	} catch (InvocationTargetException e) {
	    e.getTargetException().printStackTrace();
	    System.exit(1);
	}
    
private static voidusage()

	fatal("Usage: java JarRunner url [args..]");