All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fastchar.utils.FastJarLoader Maven / Gradle / Ivy

package com.fastchar.utils;
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public final class FastJarLoader {
	private static URLClassLoader classloader = (URLClassLoader)Thread.currentThread().getContextClassLoader();
	public static void addJar(File file){
		loopFiles(file);
	}

	/**    
	 * 循环遍历目录,找出所有的资源路径。
	 * @param file 当前遍历文件
	 */
	private static void loopDirs(File file) {
		if (file.isDirectory()) {
			addURL(file);
			File[] tmps = file.listFiles();
			for (File tmp : tmps) {
				loopDirs(tmp);
			}
		}
	}

	/**    
	 * 循环遍历目录,找出所有的jar包。
	 * @param file 当前遍历文件
	 */
	private static void loopFiles(File file) {
		if (file.isDirectory()) {
			File[] tmps = file.listFiles();
			for (File tmp : tmps) {
				loopFiles(tmp);
			}
		}
		else {
            if (file.getAbsolutePath().endsWith(".jar")) {
                addURL(file);
            }
		}
	}

	private static void addURL(File file) {
		try {
			Method add = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
			add.setAccessible(true);
			add.invoke(classloader, file.toURI().toURL());
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy