package org.util;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import DC.Utility.Configuration;
public class ClassLoad {
static URLClassLoader loader = null;
/**
* 在默认的目录加载jar
* @return
*/
public static URLClassLoader getClassLoad() {
Configuration config = new Configuration(Configuration.getRoot()+File.separator
+ "classpath.properties");
if (loader == null) {
URLClassLoaderUtil urlClass = new URLClassLoaderUtil(config
.getValue("classpath1"), false);
loader = urlClass.getClassLoader();
}
return loader;
}
/**
* 在给定的路径加载jar文件
* @param url 指定路径
* @param isFile true 文件 false 目录
* @return
*/
public static URLClassLoader getClassLoad(String url, boolean isFile)
{
URLClassLoaderUtil urlClass = new URLClassLoaderUtil(url, false);
URLClassLoader loader = urlClass.getClassLoader();
return loader;
}
}
class URLClassLoaderUtil {
URLClassLoader classLoader = null;// URLClassLoader类载入器
private String jarFileName;
private boolean isFile = true;
List<String> jars = new ArrayList<String>(0);
/**
* 加载具体的某一jar包
*
* @param jarFileName
*/
public URLClassLoaderUtil(String jarFileName) {
this.setJarFileName(jarFileName);
this.inti();
}
/**
* 加载jar包 当isFile为false是加载文件夹下所有jar
*
* @param jarFileName
* 路径
* @param isFile
*/
public URLClassLoaderUtil(String jarFileName, boolean isFile) {
this.setJarFileName(jarFileName);
this.setFile(isFile);
this.inti();
}
/**
*初始化,读取文件信息,并将jar文件路径加入到classpath
*/
private void inti() {
// 添加jar文件路径到classpath
if (this.isFile) {
File f = new File(jarFileName);
addPath(f.toURI().toString());
jars.add(f.getAbsolutePath());
} else {
ReadJarFile df = new ReadJarFile(jarFileName, new String[] { "jar",
"zip" });
this.jars = df.getFiles();
List<String> jarURLs = df.getFilesURL();
Object[] o = jarURLs.toArray();
addPath(o);
}
}