package com.ctrip.framework.apollo.core.utils; import com.google.common.base.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.net.URL; import java.net.URLDecoder; /** * @author Jason Song(song_s@ctrip.com) */ public class ClassLoaderUtil { private static final Logger logger = LoggerFactory.getLogger(ClassLoaderUtil.class); private static ClassLoader loader = Thread.currentThread().getContextClassLoader(); private static String classPath = ""; static { if (loader == null) { logger.warn("Using system class loader"); loader = ClassLoader.getSystemClassLoader(); } try { URL url = loader.getResource(""); // get class path if (url != null) { classPath = url.getPath(); classPath = URLDecoder.decode(classPath, "utf-8"); } // 如果是jar包内的,则返回当前路径 if (Strings.isNullOrEmpty(classPath) || classPath.contains(".jar!")) { classPath = System.getProperty("user.dir"); } } catch (Throwable ex) { classPath = System.getProperty("user.dir"); ex.printStackTrace(); } } public static ClassLoader getLoader() { return loader; } public static String getClassPath() { return classPath; } public static boolean isClassPresent(String className) { try { Class.forName(className); return true; } catch (ClassNotFoundException ex) { return false; } } }