Java可执行jar.这段代码做了什么?

ser*_*erg 2 java executable-jar

我正在看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});
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来像一个无用的包装.为什么不直接把它YUICompressor作为主类呢?这样做有什么理由吗?

谢谢.

Pas*_*ent 5

他们YUICompressor使用自定义类加载器(new JarClassLoader()代码片段)加载.有关此背后的基本原理,请参阅YUI Compressor和Java Class Loader.