从任意位置运行Jar文件

王朝java/jsp·作者佚名  2008-05-31
宽屏版  字体: |||超大  

/* From http://Java.sun.com/docs/books/tutorial/index.Html */

import java.io.IOException;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

import java.net.JarURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLClassLoader;

import java.util.jar.Attributes;

/**

* 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.

*/

public class JarRunner {

public static void main(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 void fatal(String s) {

System.err.println(s);

System.exit(1);

}

private static void usage() {

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

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有