我正在看Yahoo的YUI压缩器可执行jar,他们有这个类,从Manifest文件链接为"Main-Class":
package com.yahoo.platform.yui.compressor; import java.lang.reflect.Method; public class Bootstrap { public static void main(String args[]) throws Exception { ClassLoader loader = new JarClassLoader(); Thread.currentThread().setContextClassLoader(loader); Class c = loader.loadClass(YUICompressor.class.getName()); Method main = c.getMethod("main", new Class[]{String[].class}); main.invoke(null, new Object[]{args}); } }
这对我来说看起来像一个无用的包装.为什么不直接把它YUICompressor
作为主类呢?这样做有什么理由吗?
谢谢.
他们YUICompressor
使用自定义类加载器(new JarClassLoader()
代码片段)加载.有关此背后的基本原理,请参阅YUI Compressor和Java Class Loader.